Hugo 中的快取
本文專門介紹 Hugo 的所有快取,因為一般用戶不太了解這些。
快取是什麼
把計算過的東西存下來,下次用就不用重算直接讀取之前的結果,是一個簡單且強大的軟體加速方法,英文是 cache,中文是快取。
Hugo 的快取
--disableFastRender: 這不是快取,是取消偷懶模式,Hugo live reload 預設只會部分更新,此 flag 要求 Hugo 全站更新重建- Configure file caches 所有的快取選項設定,這裡只列最重要的幾個
- assets 如 CSS, SASS, JS 資源
- getresource 源碼中使用到 GetRemote 的內容
- images 影像處理快取
- modules 使用 Hugo module 安裝的 modules
--ignoreCache: 構建網站時無視上述快取內容,但是也不是全部無視,比如 module 還是不會重複下載--noHTTPCache: 設定 live reload 的 server head 加上不要快取,也就是說本地開發的瀏覽器獲取所有資源都不依賴快取,不過 favicon 使用自己的另一套快取系統,與 HTTP 快取無關partialCached: 快取 partial 模板,context 後面可給多個參數用作快取鍵,每個 site 的快取不共用(site: 每一個語言、role、version)--templateMetrics --templateMetricsHints: 用於效能分析,裡面有一個項目是分析該模板是否可快取- Configure output formats: 可設定自訂輸出的權重為 0 或 1,這樣就會在所有東西渲染前先執行,你就可以把在這個輸出裡面寫自己的快取,比如使用
hugo.Store或是真的輸出一個 JSON 作為快取,不過我實際使用發現這個在 live reload 有時候會有問題
作為一般用戶最應該設定的是 --noHTTPCache 這樣能確保不是瀏覽器作怪,--disableFastRender 用於處理 live reload 時某些東西沒有更新,比如更新 A 會影響 B,B 影響 C,最後 C 沒有更新,這就可以使用 --disableFastRender 解決。
部署快取
部署時需要重新構建整個網站,而部署快取主要是加速圖像處理,這是所有快取裡面最耗費 CPU 效能(最花時間)的東西,請參見官方在論壇的範例完成1。
大多數服務商的快取時間只維持一週,如果你一週之內都沒有更新網站快取即失效。
快取資料夾
找到資料夾的方式是在專案目錄中使用 hugo config | grep cachedir,以 macOS 為例會在 ~/Library/Caches/hugo_cache。