小樱 发表于 2017/12/29 21:04

kangle做中间源节点分发到边缘节点命中率为0,no-cache头部导致全流量未缓存直接回源

测试版本3.5.12.11
测试环境,(用户→kangle边缘节点→kangle中间源节点→kangle源文件服务器)
中间源输出HIT的情况
还会全流量回源取数据
想法是中间源节点是做CDN用的,增加中间节点,分发到所有边缘节点提高访问命中率

通过实际测试
好像是,带no-cache头部的话,一定会强制回源,而不是匹配中间源的现有缓存在输出缓存文件
期间磁盘缓存会变大,然后到HIT后,会覆盖变回原来的缓存文件貌似
这强制回源数据不合理啊
不是应该匹配文件最后修改时间之类么,或者etag等
测试是整个mp4文件都要重新回源取数据、就算中间源是HIT状态的情况下,只要浏览器带了disable cache,也就是头部信息带no-cache的时候
这肯定是BUG嘛,,输出HIT但是全流量回源
匹配下Last-Modified:多好,,而且html5的mp4有个独立的Range:bytes=22020096-元素请求头部,根据这个回显的Content-Range:bytes也可以做文件改动匹配吧。
最震惊的还是,,,只要中间源收到了no-cache,如果这次请求没有完成的话,会进入PART状态,这个文件下次在收到正常没no-cache的请求,也会导致部分回源←,反正只要中间源收到了no-cache请求,就会文件必须会完全重新更新一次就对了。


如果你确定文件不需要更新,在中间源的请求头部删了no-cache请求就行了,BUG等官方修复吧

attr填写pragma
val(regex)注意留空即可

你以为上面真的能解决??实际上并不可能!!实测无效,等官方修吧。。只要收到一次no-cache后,就需要全流量缓存更新真的坑。
当然,估计使用强制缓存也可以解决这个问题,,但是就算不用的情况,,这肯定是有毛病吧。
对了,要复现要把边缘节点缓存清空,然后访问,正常情况应该是通过中间源取数据而不是还要回源吧

页: [1]
查看完整版本: kangle做中间源节点分发到边缘节点命中率为0,no-cache头部导致全流量未缓存直接回源