cloudflare免费cdn单文件缓存上限为512mb,但实际缓存需同时满足扩展名在白名单、无bypass规则、响应头允许缓存三条件;超25mb文件须用r2+workers方案,直接缓存≥100mb视频易触发账户限速或冻结。

Cloudflare免费CDN支持缓存的单文件最大为512MB,但实际缓存行为受扩展名、缓存规则和内容类型三重约束——不是所有512MB以内的文件都会被自动缓存,更不是上传成功就等于已缓存。
免费计划下文件能否被缓存的关键前提
第一步:确认文件扩展名是否在Cloudflare默认缓存白名单内。常见静态资源如.js、.css、.png、.woff2、.webp等会被自动缓存;而.mp4、.avi、.zip、.exe、.dmg等默认【不缓存】,即使只有1MB也会绕过边缘节点直连源站。
第二步:检查该URL是否被页面规则(Page Rules)或缓存等级设置为“Bypass”或“Standard”。若存在冲突规则,哪怕文件是.png且小于512MB,也会强制不缓存。
第三步:确认源站响应头中未携带Cache-Control: no-store、Cache-Control: private或Set-Cookie头。只要出现其中任一字段,Cloudflare会立即放弃缓存,无论文件大小或格式。
单文件上传限制与实际缓存限制的区别
方法一:通过Cloudflare Pages上传静态文件
仅限纯静态HTML/CSS/JS/图片等资源,单文件上限为25MB。超过25MB的文件上传会直接失败,控制台报错“Payload too large”。
方法二:通过Cloudflare R2对象存储托管大文件
R2本身无单文件大小上限(实测支持≥10GB),但R2不提供CDN缓存能力——必须配合Cloudflare Workers或Pages Functions做反向代理,才能将R2文件暴露为可缓存URL。此时缓存与否仍取决于Workers返回头是否允许缓存。
方法三:源站直传+Cloudflare CDN代理
这是最易踩坑的方式:把100MB的.mp4放在源站Nginx上,用橙色云朵代理该域名,看似走CDN,实则【默认不缓存】。必须手动配置页面规则,将匹配*.mp4的URL设置为“Cache Level: Cache Everything”,并确保源站返回Cache-Control: public, max-age=31536000,否则仍不会缓存。
为什么100MB视频文件极可能触发账户风险?
Cloudflare服务条款明确禁止将CDN用于大规模媒体分发。社区实测反馈显示:连续3天内,同一站点有≥5个独立IP高频请求≥100MB的未压缩视频文件,系统会自动标记为“异常带宽模式”,72小时内可能收到邮件警告;若未及时调整,第5天起开始限速,第7天可能冻结缓存功能。
免费计划带宽虽标称“无限”,但隐含合理使用原则(Acceptable Use Policy)。缓存一个100MB视频1000次,等于消耗100GB边缘带宽——这部分流量不计费,却挤占了同节点其他用户CSS/JS的缓存空间,违反设计初衷。
真正安全的做法是:视频用R2存储 + Workers动态签发短期预签名URL,既规避缓存滥用,又防止盗链。此路径下,文件大小无限制,也不触发CDN滥用检测。











