由於在圖片較多時,編譯時間非常久,本頁面內容已經失效。目前使用的方案是 Imagio。
部落格中的資料一般分為文字資料和二進位制資料兩種。在靜態部落格盛行的當下,使用 CI,即持續整合(Continuous Integration),來從 Git 倉庫構建 HTML 檔案是一個非常常用的選擇。然而這也要求要麼使用圖床等技術,要麼必須將圖片等二進位制資料也儲存在同樣的倉庫中。
曾經因為並不信任圖床的穩定性,以及畢竟資料會持有在別人手中,我將圖片儲存在同一個倉庫中。然而圖片越積越多,導致倉庫體積不斷變大。並且由於 EXIF 資訊洩露等問題,直接在部落格中使用未經處理的圖片也有一些隱患。同時,為了圖片的高解析度和圖片質量,也不斷在犧牲訪問速度。
使用 Hugo 來進行影象處理
Hugo 靜態部落格生成器很早就支援了影象處理這個功能,能夠對圖片進行裁剪,轉換大小,高斯模糊等一系列操作,配合一些 JS 庫更能做到非常好的 Lazy Load 體驗。
使用 v0.80 版本的 Hugo 中新的 Overlay Filter,更能為圖片新增水印,非常方便。
從另一個倉庫收集圖片連結
我並不是很喜歡將這個圖片連結的處理交給 JS 完成,同時為了完成二進位制資料和文字資料的分離,我也將圖片儲存在了另一個倉庫中,就要求原始倉庫有能力獲取到處理後圖片的連結。
這一點可以透過 Hugo 的 getJSON 函式和 Hugo 本身的頁面模板來完成。在圖片倉庫編寫 JSON 模板,生成處理後的圖片和 JSON 索引檔案,在文字倉庫透過 getJSON 函式獲取索引,並索引相應圖片的連結,即可在編譯 HTML 時得到不同解析度以及不同型別的圖片的連結,並嵌入到頁面中。
使用 Cloudflare Pages
最後,將圖片這個倉庫使用 Cloudflare Pages 進行構建,直接部署到對應的 Cloudflare CDN 上,就可以使用 CDN 進行加速了。