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也做了一些类似的工作。
评论