簡介 103 Early Hints
Early hints 在伺服器回應真正內容之前提早回應「已知」會用到的內容,利用伺服器準備真正內容的空檔時間。
靜態網站做這個幾乎沒有幫助。
在 Hugo 實作 early hints
先講結論,別做,pagespeed insights 根本測不出差異,因為靜態網站沒有伺服器準備時間,你只需要把關鍵資源放到 head 標籤最前面就好了,就像 capo.js 建議的那樣。
建立方式很簡單
-
用
hugo.Store把你要的資源的 RelPermalink 記錄下來 -
再把資源網址取出來建立
_headers檔案(Cloudflare/Netlify 適用的 _headers 檔案)- 用
resources.FromString不需要碰設定檔 - 用 outputFormats 方案適用於目標檔案用了 templates.Defer,設定檔設定新的輸出格式,設定他的 weight 在 HTML 之後,這樣就能確保執行順序正確
- 用
-
_headers檔案的 early hints 寫法像這樣Link: <https://cdn.example.com>; rel=preconnect, <https://cdn.example.com>; rel=preconnect; crossorigin
在 Cloudflare 實作 early hints
先講結論,官網的 103 Early Hints 是你唯一一篇需要看的文檔,其他都沒用。
如果是 Cloudflare Pages 部署,不需要設定,CF 已經自動偵測並且自動發 early hints 了。
如果是 Cloudflare Workers 部署,workers 目前(2026/10)如果要支援 early hints,你必須採用 custom header 方案。這最大的問題是,這裡就會需要處理請求了,因此會有 API 費用問題;並且如果用 static assets 部署,請求會多經過一層 worker 處理而不是 static header 直出。
相關文章
照重要順序排列
- Chrome developers: Faster page loads using server think-time with Early Hints
- MDN: Link header
- MDN: 103 Early Hints
- Cloudflare: Headers
- Cloudflare: 103 Early Hints
- Cloudflare: Migrate from Pages to Workers
- Cloudflare: Early Hints