Cloudflare CDN请求body被限制问题,以及http Range请求头被移除问题

原创 吴就业 266 0 2024-03-27

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/fcf84530813a4022b2301e354ba8d2d9

作者:吴就业
链接:https://wujiuye.com/article/fcf84530813a4022b2301e354ba8d2d9
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

个人博客网站接入了Cloudflare CDN,利用CDN缓存图片、视频静态资源。最近上线视频的上传和播放功能后发现一些问题。

Cloudflare CDN请求body被限制问题

由于偷懒,博客管理后台的视频上传功能只实现非常简单的上传接口。上线后发现上传视频总是上传失败,视频基本在两三百M大小。

起初是怀疑服务端代码使用的web框架限制了请求body大小,但是本地测试并没有这个问题,于是只能怀疑,要么是Railway限制的(服务使用Railway.app部署),要么就是Cloudflare CDN限制的。

折腾一通后,发现原来是Cloudflare限制的。

截屏2024-03-27 10.35.24

对于免费用户,单个请求的最大Body大小为100mb,对于付费企业用户,最大也只有500MB。

其实100Mb够用了,大文件上传应该走分片上传。

Cloudflare CDN不支持http Range请求头问题

之前上传两三百m的视频,发现在播放的时候会卡顿一会,起初并没有在意。后来上传一个1G大小的视频,发送卡很长时间都无法播放。

起初还是怀疑自己的代码没有支持http range,但是本地测试,以及线上绕过Cloudflare CDN测试,range请求都是生效的。

通过加日记后发现,请求经过Cloudflare CDN后,Range请求头被干掉了,Cloudflare CDN请求源站的时候并没有带上Range请求头。

另外,通过测试还发现,即便Cloudflare CDN请求源站拿了视频之后,之后的请求命中缓存,Range请求还是不支持,浏览器依然需要等待把整个视频下载完成后才能播放。

解决方案只能是放弃CDN缓存和加速,Cloudflare配置仅DNS解析,绕过Cloudflare CDN,请求直接回源站,但缺点就是费流量,以及视频加载慢。

#后端

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

文章推荐

df命令查看挂盘目录大小是整个文件系统的大小还是挂载的目录的大小

df命令获取的是整个nfs文件系统的磁盘空间使用情况,而不是我们挂盘的目录。统计目录的使用情况可以使用du命令。

golang如何本地开发然后在远程编译运行

有时候,我们可能会遇到go项目中依赖一些底层的lib c库,这些库是只有linux环境下才有的,而我们本地开发环境一般是windwos系统或者mac os系统,我们也懒得搞一个Linux虚拟机来专门做开发,而且在虚拟机里面开发体验也确实不好,会影响效率。

阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller

本篇从掘金同步过来,是作者之前将博客部署在阿里云ACK上,尝试使用APISIX网关的经验分享。

Go语言有前途吗?

做后台开发,不管是java还是go,都只是一门编程语言罢了,不会说做了5年的java后端研发,换成go就不会了吧,顶多花点时间学习一门语言和一些框架,把编码习惯变一变而已,在问题排查方面,需要重新学习一些工具而已。

新人成长路上,技术选型容易犯的错

技术人追求技术是好事,但应该把精力放在精益求精上,而不是追随潮流。没必要一味追求用一项技术,技术选型的目的就是选择各方面对比最适合的,这也包括开发成本、运维成本。

领导叫我做技术分享,如何做好一次技术分享?

领导找我做技术分享,我应该分享什么,以及如何做好技术分享?