Cloudflare Pages 首月初體驗

2021.12.03

自 blog 透過 Hugo 重構並托付到 Cloudflare Pages 也已經一個月左右了, 只能說怎一個爽字了得? 在這里就具體談一下個人體驗並對 Cloudflare Pages 使用過程中的一些細節做簡單記錄, 也記錄一些使用過程中遇到的小問題及其解決方式以便日後參閱.

怎一個爽字了得?

無伺服器運行

GitHub/GitLab + Cloudflare Pages 的實現方式可以為自己省去伺服器, 一方面節省了不少的開銷, 另一方面也省去了不少維護伺服器的時間和精力成本. 盡管現在 GitHub 這類大廠的 SLA 也愈來愈慘不忍睹, 但 Cloudflare 的在線率和全球接入點還是相當不錯的. 能夠省去維護伺服器這一步也確實是我在重構 blog 之前的主要考量, 重構並托付之後的實際體驗也證明這種模式真的很舒服, 現階段的 每篇文章更新我都只需要丟一個 .md 到倉庫就不用再管 了, 完全由 Cloudflare Pages 自動化構建和分發.

免去額外備份

還在自己的伺服器上運行 blog 時需要時不時把 .md 文章都 push 到 GitHub/GitLab 倉庫又或者傳到一些雲服務上做個簡單的備份. 在重構並托管到 Cloudflare Pages 之後本身服務就直接從 GitHub/GitLab 倉庫獲取數據, 也就不存在這額外的倉庫備份步驟了, 加之 Cloudflare Pages 本身的每次構建都是可回滾有類似 snapshot 的機制的, 完全不再需要額外的備份步驟了.

降低配套成本

這里的配套成本主要是指 SSL 和 CDN 之類的服務配置及其更新, 眾所周知 SSL 證書是需要定期更新的, 而 CDN 也是需要一些回源方面的配置, 比如在伺服器上配置只允許來自 CDN 的請求等等. 而托管在 Cloudflare Pages 之後這些問題都不再需要個人去關心, 完全由 Cloudflare 和它的全球節點來解決, 甚至 Cloudflare Pages 是帶域名的, 也就是說站點本身甚至不需要你自己的域名. 這些都在很大程度上降低了站點服務的配套成本, 不論是開銷上還是維護時間和精力的成本上.

細枝末節

構建時間

Cloudflare Pages 對於 Hugo 架構的站點構建花費的時長是差不多的, 以本站為例單次構建的時間約為兩分鐘左右. 具體的構建主要包括: 部署環境 - 拉取倉庫 - 構建應用 - 全球分發 四個步驟. 在部署環境時花費的時間是最久的, 平均需要兩分鐘, 也就是說後面的幾步幾乎是十秒內就可以完成的, 這對於個人而言已經是相當迅速了. 當然, 這也只是以本站為例, 僅供參考.

指定版本

我在使用 Cloudflare Pages 的 Hugo 環境自定義 RSS 格式時遇到一些小問題, 根據 Hugo 官方文檔模板修改的 RSS Module 並沒有能夠通過 Cloudflare Pages 的構建, 一開始本以為是修改了什麼不該修改的地方, 或寫了什麼語法錯誤在里面, 後來幹脆把 Hugo 官方文檔的模板原封不動放進去居然也沒有通過, 我便想到了版本問題. 隨後的構建中我透過在 Cloudflare Pages 中定義 HUGO_VERSION 變量來指定 Cloudflare Pages 使用的 Hugo 環境版本, 解決了這個問題. 順帶一提, 我在本地測試時使用 apt 庫默認的 Hugo 環境也是沒有問題的, 而 apt 庫中的 Hugo 版本已經和倉庫中的最新版本有不小的距離了, 真不知 Cloudflare Pages 的 Hugo 是什麼三疊紀版本呢?

面向爬蟲

除了 Hugo 本身對 robots.txt 規則的支持之外, 我們在使用 Cloudflare Pages 之後也可以透過 Cloudflare 的 Firewall 創建一系列自定義的規則, 包括針對各種爬蟲的安全策略. 在這里值得一提的是 Cloudflare Firewall 中的 Bot Fight Mode, 可以透過在與已知模式匹配的請求訪問站點之前發起質詢來規避危險的爬蟲存取站點數據. 總而言之, 不論是簡單的 robots.txt 或 Bot Fight Mode 這類簡單的規則, 還是覆雜的自定義 Firewall Rule 也好, 透過 Cloudflare 可以非常輕松的完成配置, 而 Cloudflare Pages 完全省去回源過程, 不再需要擔心繞過 CDN 的攻擊, 最大限度保障了站點安全.

重定向

在 Hugo 的重定向設計之外, Cloudflare Pages 也支援透過創建 _redirects 文件來配置個性化的一系列重定向規則, 更加簡單好用並且非常強大 . 在 Cloudflare Pages 的 官方文檔 對應說明中可以看到, 重定向規則的自定義方式簡單又靈活, 甚至包括 根據訪問者所在地區 或 Cookie 進行響應, 響應類型也囊括了臨時重定向和永久重定向甚至反代回應等等, 絕對豐富了站點所有者和訪問者的體驗.

更多期待

當然, 還有一些沒有寫到的部分有待日後想起時再繼續補充. 而 Cloudflare Pages 誕生不久, 還在成長和蓬勃發展階段, 日後的特性定會越來越豐富和強大, 在這里也由衷地期待一下. 最重要的是, 希望 Cloudflare 能夠自始至終不忘初心, 保持現在的優秀姿態.