部落格系統知多少:揭開那些不為人知的學問(一)

部落格系統知多少:揭開那些不為人知的學問(一)

大佬說部落格

最後更新 2022/3/8 下午9:09
汪宇杰博客
預計閱讀 8 分鐘
分類
分享
標籤
分享

導語

在我們生活的年代,部落格並不稀奇,甚至可以說是隨處可見。從最早的搜狐、新浪部落格,再到每個人都曾記錄青春的 QQ 空間,再到現在的 Vlog 與 Plog,似乎擁有自己的部落格並不是什麼難事。然而想要自己從零開始建立一個出色的部落格系統,則並非那麼簡單。可能有些懂技術的小夥伴會說,看上去只是簡單的對文章 CRUD 就行了,也沒有那麼複雜啊。然而,真的是這樣嗎,這背後可能隱藏著更多玄機等待著我們去挖掘。掐指一算,我建設自己的部落格已有 11 年,也見過許多程式設計師自己編寫部落格系統,但真正按規範和標準設計的功能完備的部落格少之又少。本文我將分享自己在部落格系統設計中累積的經驗,介紹一些鮮為人知的部落格技術,幫助想要建立部落格的小夥伴們進一步了解如何設計一個優秀的部落格系統。

目錄

由於文章篇幅較長,本文將分為 4 篇推送,目錄如下:

  1. 「部落格」的前世今生
  2. 我的部落格故事
  3. 誰是部落格的受眾?
  4. 部落格基本功能設計要點
    • 4.1 文章(Post)
    • 4.2 評論(Comment)
    • 4.3 分類(Category)
    • 4.4 標籤(Tag)
    • 4.5 歸檔(Archive)
    • 4.6 頁面(Page)
    • 4.7 訂閱
    • 4.8 版本控制
    • 4.9 主題及個性化
    • 4.10 使用者及權限
    • 4.11 外掛
    • 4.12 圖片及附件的處理
    • 4.13 髒詞過濾及評論審查
    • 4.14 靜態化
    • 4.15 通知系統
  5. 部落格協定或標準
    • 5.1 RSS
    • 5.2 ATOM
    • 5.3 OPML
    • 5.4 APML
    • 5.5 FOAF
    • 5.6 BlogML
    • 5.7 Open Search
    • 5.8 Pingback
    • 5.9 Trackback
    • 5.10 MetaWeblog
    • 5.11 RSD
    • 5.12 閱讀器檢視
  6. 設計部落格系統有哪些知識點
    • 6.1 時區真的全用 UTC?
    • 6.2 HTML 還是 Markdown
    • 6.3 MVC 還是 SPA
    • 6.4 安全
  7. 結束語

「部落格」的前世今生

部落格一開始不叫 Blog,而叫 Weblog,可能讓很多人詫異的是,它並不誕生於 Web 2.0 時代,而是早在 1997 年已經問世。部落格從最早的单使用者(單獨作者),逐漸發展為多使用者(一個團隊),即部落格平台。而 Web 2.0 時代賦予了部落格社交屬性,可以讓讀者進行評論、訂閱(RSS/ATOM),部落格作者之間可以互相抱團(FOAF)、引用文章(Pingback),才讓部落格逐漸熱門了起來。

部落格系統也是各有千秋,PHP 有 WordPress,.NET 有 BlogEngine。而最終,WordPress 幾乎成為了事實上的部落格系統的標準,它同時具備一些 CMS 的功能,微軟官方 .NET 團隊的部落格也是採用 WordPress 搭建。

圖 | 網路

閱讀部落格的使用者除了使用瀏覽器,還會使用 RSS/Atom 閱讀器。在 iPad 剛出來的年代,閱讀器應用曾經風靡一時。訂閱的部落格一旦有新文章,閱讀器就會自動收入,讀者無需每天人肉檢查是否有新文章發布。Microsoft 365 的 Outlook 至今保留著 RSS 閱讀器的功能。

部落格至今依然是表達自我、傳播資訊並與社群互動的最佳途徑之一,就算微博(microblogging)出現,也沒能使部落格變得不再流行。所以說,部落格之於網際網路,就如同電子郵件一樣,「薑還是老的辣」,部落格作為一種文化載體,歷久彌新,持久散發著光芒。

我的部落格故事

我的部落格項目最早可追溯到 2003 年,那時候我正在上國中,課餘時間自學了 ASP 及 Access,構建了我的第一個個人網站,主題居然是駭客技術(年少無知,以為非常酷炫)。除了原創及轉載技術文章,也提供常用軟體工具下載等服務,有時候還假裝大學生幫人完成 ASP 的畢業設計(畢竟說自己是國中生沒人會相信)以換取 Q 幣、QQ 秀等(太有年代感…)。這個系統一直維護到 2007 年我上高二,它長這樣:

(圖:2003-2007年的個人網站)

大學指考之後,我終於有大量的時間學習自己想了解的技術,且不用擔心被家長埋怨不好好學習。那會我自學了 ASP.NET(VB),構建了我的第二代個人網站,主題不再是駭客技術,而是常規的電腦技術分享,主打原創技術文章(日誌),同時也開發了相簿、播客等 SNS 功能,並於 2009 年上線,它長這樣,一直維護到 2011 年。

(圖:2009-2011年的個人網站)

2012 年畢業以後,我當了一名工程師(程式猿),沒有精力維護軟體下載、相簿和播客等欄目,於是決定只做技術文章,大刀闊斧地改版了我的網站,部落格的雛形就出來了。為了構建部落格,我參考了同樣是 .NET 的 BlogEngine 項目。其實國內某著名的 .NET 部落格平台,最早就使用了 BlogEngine 項目,甚至它當年還有個中文版,叫博易。不過與其直接魔改他人的項目,我選擇看懂程式碼以後,自己用不同的方式去實現。本文之後要介紹的許多內容也來源於這段時間的學習。

畢業 7 年後,發現各項技術發展迅猛,.NET 技術與其他主流技術的競爭非常激烈,而長期在外商的我主要運用的還是 .NET 的技術。此時我下定決心,在業餘時間裡,用 .NET Core 重寫我的部落格系統,命名為 Moonglade,並開源到 GitHub(https://github.com/EdiWang/Moonglade)目前部落格地址是 https://edi.wang。內容面向國外社群,部署在微軟 Azure 的海外伺服器上(國內訪問可能較慢)。

刨除國中時代牛刀小試的 ASP 不說,從 2009 年到 2020 年這 11 年間,我的部落格程式碼橫跨十幾年 .NET 發展歷程,從 ASP.NET WebForm 2.0 VB.NET + Access 到現在的 ASP.NET MVC Core, C# 8 及 Azure SQL Database,也整合了 Azure App Service、Azure DNS、Azure DevOps、Azure Active Directory、Azure Blob、Azure AD、Azure CDN 和 Application Insights 等技術。

(圖:Moonglade部落格系統使用的Azure服務)

誰是部落格的受眾?

在談設計部落格之前,我們首先要明確,你的讀者從何而來?搞清楚這一點後,才能夠聯想出使用者將如何使用你的產品。這也正是本文所要介紹的部落格的設計方法和要點。

開發和經營部落格 11 年的經驗累積和數據統計告訴我,對於一個常規技術部落格,95%以上的流量來自於搜尋引擎,並且多數情況下讀者只查看這一篇他們所需要的文章,固定讀者或訂閱使用者佔總流量的比例相當少。這是由於技術部落格分享的內容多數為解決一個具體的技術問題。而技術人員遇到技術問題的第一反應就是去搜尋引擎查詢有沒有人曾經遇到過並已經解決,有可能複製貼上文章裡的程式碼去解決自己項目裡的問題後,就忘記了部落客的存在。只有真正覺得部落客的文章有一定水準,才會開始瀏覽部落格裡的其他內容。

不難發現,我們的使用者入口幾乎就是搜尋引擎,所以一個優秀的部落格系統,並不是只做好文字功夫,需要大量考慮SEO及其他針對機器與系統之間互動的部落格協定,時刻考慮SEO也是貫穿本文的重點

本文並不教大家程式碼的設計、技術實現,而是教大家部落格系統的設計思路和要點。至於技術方面,大名鼎鼎的 WordPress、前輩們的 BlogEngine.NET,以及我的 Moonglade,目前都已開源的,可供大家隨時研究。

下篇我將介紹【部落格基本功能設計要點】

敬請關注

汪宇杰

繼續探索

延伸閱讀

更多文章
同分類 / 同標籤 2022/3/29

疫情下的北京失業中年

最近身邊的一個朋友突然間就被辭退了,而且是一線網路大廠,週末跟我聚了一下。喝了一點小酒,聊了很多,他說我可以把他的經歷發出來,因為他已經看淡了

繼續閱讀