2025年初偶然發現Cloudflare後台中有個Beta版的新功能:Snippets(中文翻譯為“片段”,也就是一小段程序的意思),看介紹是通過JavaScript程序來實現各種功能,例如:修改響應頭、添加token驗證、進行複雜重定向等。這個功能隻對付費用戶開放,有一定的設置數量、運行資源限制,但沒有運行次數的限制,感覺這其實就是一個簡化版的Workers。

昨天寫的一篇博客文章《利用Hugging Face的Datasets來保存數據》,說到把一些網站上的圖片放置到Hugging Face的Datasets中去,然後再設置Cloudflare中的Snippets來達到網址完全不變而回源的訪問都從ECS服務器改為Datasets,具體需要設置兩個方面:
- 片段規則:設置在什麼樣的情況下執行設置的代碼,可以通過表達式生成器來編輯或者直接編輯文本
- 片段代碼:符合規則後要執行的JavaScript程序代碼,直接在網頁進行編輯和調試
具體代碼可以參考Cloudflare官方的幫助中心Snippets中的例子,再根據自己的需求讓AI來幫助改一改就可以,我以前對JavaScript語法也不熟悉的,這次用ChatGPT來幫助,很快可以搞定,以後學習編程真的容易多了。✌️
這種方式起碼是可以節約我們ECS服務器帶寬和CPU資源的,特别是在網絡爬蟲太兇狠的情況下。我和同事商議的時候還畫了一幅圖,不太清晰,但也留在這裡。

除了圖片的分發以外,用Cloudflare的Snippets直接生成XML文件并打包壓縮也是可以做到的,這在我們網站生成特定的sitemap的時候也很有用。
目前Pro訂閱域名下可以用25個Snippets,每個Snippet下有2個子請求可以使用,另外執行時間、内存占用、包大小也都有一些限制,比Workets功能弱一些,但合理使用的話,還是可以做很多以前做不了的工作的。
百度智能雲的CDN也有EdgeJS的功能,同事模拟Cloudflare中的Snippets也做了一些類似的工作。
评论