關於 Blog 的重構

2021.11.21

實際上這是 blog 的第二次重構, 這次更多地是出於一些契機. 從個人生活的角度而言, 最近迫切需要一個能夠寫下讀書筆記的片刻角落. 而從技術角度上來講 Cloudflare Pages 最近較為完整地支持了 GitHub/GitLab 平台的 Hugo 框架自動化構建, 可以說實在是很省時省力了, 也可以從維護伺服器的時間精力成本上解脫出來, 專註於寫下些什麽. 這裏便簡單記錄下 blog 重構的一些內容與參考鏈接, 並談談自己如此選擇的想法.

講在前面的些許願景

近來愈發覺得越是在生活的沈澱期就越需要靜下心來, 讀書就是很好的選擇. 在看小王子和失明癥漫記的時候被當中的很多文字感染, 也就記錄了下來. 這便需要一個能作摘抄的地方, 緊接著應該也會用幾個文章的篇幅簡要寫下當時的記錄. 我本就不打算作純粹技術向的 blog 內容, 更希望這裏能夠記下生活和身邊的些許, 包括讀書看劇和歌單甚至遊戲都希望能夠在這裏記錄. 也或許是因為技術類的內容實在是太容易過時, 加上我對互聯網中文圈子的無奈, 不願再作各類官方文檔的覆讀機, 即便要寫也只會記下一些經驗教訓僅供參考.

至於評論則在可見的未來都將長期處於關閉狀態, 我實在是不認為評論區一問一答的交錯互動能夠帶來什麽有效的討論, 無非會吸引很多伸手黨乞討式拋出些毫無營養的 RTFM 和 STFW 問題. 我對任何有意義的討論實際上都是開放和歡迎的, 也因此在 blog 上留下了一些聯系方式, 歡迎隨時聯絡.

純粹雲端地構建和運行

總的來說, 目前 blog 使用 GitHub/GitLab 配合 Cloudflare Pages 的 Hugo 框架來運行. 不僅可以省去伺服器的維護成本, 還可以依賴於 Cloudflare 和 GitHub/GitLab 較高的 SLA 保障站點的長期在線. 特別是 Cloudflare Pages 可以在倉庫發生變化時自動化構建, 可以大大減輕寫新文章時的負擔.

Hugo is a tool for generating static sites, written in Go. It is incredibly fast and has great high-level, flexible primitives for managing your content using Markdown and JSON.

對於 Hugo 框架系統這裏不再過多介紹, 號稱是世界上最快的站點構建框架. 實際上我個人看重的主要是其極高的性能和低資源占用, 恰好 Cloudflare Pages 又支持直接基於 Hugo 的構建, 實在是再方便不過. 這裏也不再贅述 Hugo 的具體用法, 請自行移步 Hugo 官方文檔 查閱.

在 Hugo 的主題風格上這裏主要選用了 Zozo 的簡潔風並在此基礎上稍作了個人化修改, 出於改動不大並且 Zozo 主題 MIT 許可證並沒有強制要求衍生品開放源代碼等原因, 這裏並沒有也不打算將站點目前使用的 Hugo 主題源代碼放出. 如有興趣請自行移步參考 Zozo 的原主題. 字體方面則主要選用了 Noto Serif TC 與 Source Code Pro 分別用作站點主要字體和代碼塊等寬字體. 字體版權均歸 Adobe Systems Incorporated 所有, 特此說明.

Hugo 透過 GitHub/GitLab 在 Cloudflare Pages 上部署的具體流程概要在 Cloudflare Pages 官方文檔 中已經講解的較為清晰, 本文也不再額外說明, 請直接移步獲取相關內容. 值得註意的是, 如果需要特定的 Hugo 版本你也可以透過 HUGO_VERSION 變量來指定需要的版本號.

CDN 是現代站點配置不可或缺的一項, 不論是想要提升用戶訪問效率還是保護站點又或是開源節流減少主站點的開銷負載 CDN 都能夠起到很好的作用. 選用好的 CDN 服務商其實也是重中之重, 這裏主要透過 Cloudflare 本身的節點搭配 jsDELIVR 上調用托管在 GitHub 的部分靜態資源等方式最大化利用開放的資源, 以便對各種不同網路環境下的訪問者更加友好.

其他細枝與末節

Dark mode 支援有多重要?

非常重要. 在我的二級域名對應 主頁 我便選擇了支援 Light/Dark mode 的自適應頁面結構, 這對於用戶體驗而言真的非常重要, 特別是我這種常年晝伏夜出的人頗有體會. 但我的 blog 並沒有選擇實現 Dark mode 支援, 其所需的時間和精力成本只是很小的一方面, 主要原因是設計和個人想法. 對於目前這套交互和頁面設計我是比較滿意的, 在作 Dark mode 設計樣例的時候並沒有找到很好的搭配方案, 並且像書籍紙張一樣的頁面風格, 如果換做黑灰色調似乎會變了味, 如此也就不再打算在 blog 支援 Dark mode 了, 或許在可見的未來也都不會再嘗試支援.

URL 鏈接選用 ID 型還是名稱型?

這幾乎算是鏈接目錄結構選擇上最常見的問題了. 實際上 ID 型短小精悍便於分享的性質也使得很多場景下都會被優先選用, 特別是非英文目錄結構在目前依然需要轉換為冗長的符號鏈接才能跳轉這種情景下顯然是非常好的選擇. 但相比起冷冰冰的數字 ID 而言名稱型目錄結構的人情味讓人的感受更為親切, 正如目前地址欄所示對目錄結構作英文化規範很大程度上也能夠規避被轉換為冗長符號鏈接的問題. 加之 ID 型目錄結構易被枚舉的特性, 思來想去規範化的英文目錄結構實在是很好的選擇.

The latest TLS version only 是否太激進?

儘管很想回答不是, 但確實是. 很多場景下站點所有者並不能夠保證用戶群體的各種場景都能夠滿足最新的訪問方式, 甚至考慮不盡一些用戶群體是透過什麼方式如何與站點建立連接. 出於一些此類的顧慮做出些許妥協顯然是必要的, 允許兩個版本的訪問請求也應該是較好的讓步.

結語

最後還是要作些勉勵, 一直對 文心雕龍 中的 為情者要約而寫真, 為文者淫麗而煩濫 頗為中意, 謹以此勉勵自己. 寧缺毋濫並不代表不能有生活氣息. 願能記下生活點滴, 勉勵自己寧缺毋濫寫下真情實感也就好了.