有一年多沒有更新博客了吧,最近想把博客給拾掇拾掇,打開博客就發現圖片加載好慢。我一直使用的是免費資源,比較費精力,託管圖片的地方也換了好幾個,每種方法有所長,也有所短。
本文搭建圖牀的方法主要參考這篇文章,使用 Backblaze B2 存儲圖片,Cloudflare 配置子域名、設置緩存等,rclone 用做 B2 的客戶端,管理本地的圖片。
上圖爲設置前後的效果對比,使用這種方法後,博客圖片加載快了不少。
Backblaze B2
B2 是 Backblaze 的雲儲存產品,有 10GB 的免費存儲空間,用來存儲圖片足夠了,B2 的具體配置過程,文末給出的參考文章介紹得很詳細,可以具體參考。
配置妥當後,資源的 URL 形如 https:/fxxx.backblazeb2.com/file/<bucket-name>/path/to/resource
這種形式,如果不需要子域名、緩存等進一步需求,到這就可以了。
Cloudflare
使用 Cloudflare,它需要你把域名的 DNS 服務器換成它家的。配置子域名時,需要一定的時間生效,請耐心等待,完成後,資源的 URL 變成 https:/subdomain.domain.com/file/<bucket-name>/path/to/resource
。
按照參考文章的步驟,配置好 Cloudflare Workers 後,資源的 URL 變成了 https:/subdomain.domain.com/path/to/resource
,去掉了 /file/<bucket-name>
,如此一來,顯得更專業了許多。Workers 就是一段 JavaScript 代碼,由特定的路由觸發,可對站點的原始請求、響應進行修改,在這裏通過 Worker 腳本完成了定製 URL 等需求。
在 Cloudflare 上還可以設置站點的緩存,設置緩存後,站點響應會更快。
rclone
考慮到平臺支持性,我選擇 rclone 這個工具用做 B2 的客戶端,管理本地資源。rclone 是一個命令行工具,用來同步本地資源到各種雲存儲解決方案。rclone 支持各種平臺,文檔也很詳盡。
// 配置 B2, 需要控制面板創建的 API key
rclone config
// 列出所有云端目錄
rclone lsd remote:
// 列出某個 bucket 中的所有文件
rclone ls remote:[bucketName]
// 複製文件
rclone copy [pathFrom] [pathTo]
// 利用命令替換, 可實現本地資源按年月分類上傳雲端
rclone copy [pathFrom] remote:[bucketName]/$(date +%Y)/$(date +%m)
// 刪除文件
rclone delete [path]
// 同步本地至雲端, -P 參數用於開啓傳輸過程
rclone sync [source] [dest] -P
在 B2 上的文件,路徑前需要加上 remote:
,假設 B2 上有一個 bucket 的名稱爲 mistletoe
,上傳本地文件 some.txt
至 B2 的命令就是 rclone copy some.txt remote:mistletoe/some.txt
。如果覺得一張張上傳太麻煩,可使用 sync
命令將本地目錄同步至雲端。