为何Cloudflare不缓存WebAssembly文件却缓存同路径JavaScript文件?
为什么Cloudflare不缓存WebAssembly文件?
根据Cloudflare文档说明,动态URL不符合缓存条件时,cf-cache-status会返回DYNAMIC。通过curl检测发现同路径下的JS文件能被正常缓存,但WASM文件却不行:
检测WASM文件:
$ curl -sI https://play.carimbo.cloud/0.0.70/flippingpixels/wiggler/0.0.22/480p/carimbo.wasm | grep cf-cache-status cf-cache-status: DYNAMIC
检测同路径JS文件:
$ curl -sI https://play.carimbo.cloud/0.0.70/flippingpixels/wiggler/0.0.22/480p/carimbo.js | grep cf-cache-status cf-cache-status: HIT
可能的原因
- Cloudflare默认缓存规则不包含
.wasm后缀:Cloudflare默认会缓存JS、CSS、图片等常见静态资源,但WASM文件不在默认缓存列表内,需要手动配置。 - 源服务器响应头配置问题:WASM文件的
Cache-Control头可能设置了no-cache、no-store或max-age=0这类禁止缓存的指令;而JS文件的响应头配置了合理的缓存时长(比如max-age=31536000)。 - 缓存/页面规则差异:可能你针对JS文件设置了专属缓存规则,但未覆盖WASM文件;或者存在规则明确排除了
.wasm文件的缓存(比如设置了“绕过缓存”)。
解决方法
- 检查源服务器返回的WASM文件响应头,确保
Cache-Control设置为允许缓存的指令,例如:Cache-Control: public, max-age=31536000。 - 在Cloudflare控制台的「缓存规则」中,添加匹配
.wasm后缀的规则,设置缓存级别为「缓存所有静态资源」,或自定义合适的缓存TTL。 - 排查现有页面规则,确认没有针对WASM文件的“绕过缓存”或“不缓存”设置。
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

