小樱 发表于 2017/12/13 00:03

kangle的删除Accept-Encoding头(内容过滤要选上)有什么用 为什么会提高缓存命中率

这个3.5.12新版和旧版有点不一样。
新版考虑了accept-encoding
国为要支持br压缩。
如果不同的accept-encoding是不同的缓存的。所以导致了一个命中率问题,mp4会默认发送请求Accept-Encoding: identity;q=1, *;q=0,因为新版的identity是不缓存的(3.5.12.6修正identity缓存问题)



虽然是同一个url,但accept-encoding不同,他们并不能共用。
kangle的删除Accept-Encoding头(内容过滤要选上)删除的是使用CDN下收到从源服务器发送上来的,是删除“Vary: Accept-Encoding”,源服务器输出的,告诉浏览器和kangle CDN服务器支持不同缓存的这个源站输出的回应头部。
但是用户端浏览器直接请求kangle CDN节点的删除不了
并且其他web server也是这样的逻辑
例如浏览器默认请求accept-encoding:gzip, deflate, br

嗯,正常情况下多个不同的浏览器请求,会产生五份缓存文件
不过age输出的时间都一样(新版已修复,不同缓存输出age独立),但是空间占用了五份大小容量gzip、deflate、compress、br、identity
如果浏览器请求的Accept-Encoding值为空或者其它任意数值内容,默认输出identity的那一份缓存文件
测试方法,分别修改Accept-Encoding的值
wget --header="Accept-Encoding: gzip" -S http://ip/404.png


删除Accept-Encoding头(内容过滤要选上)这个选项已经废弃了,因为要考虑不同的缓存
如果你要精准删除从CDN节点访问源服务器的头部,那么就需要去请求控制进行删除
用file_ext匹配模块匹配格式和remove_header标记模块,可以完整删除回源的头部信息,可以提供源服务器到节点的命中率,当然这个方法没法控制CDN节点服务器收到浏览器请求导致的多份缓存,看下方介绍。

attr填写
accept-encoding
val(regex)直接留空


可以直接用这个模块来控制节点多份缓存问题:http://bbs.itzmx.com/thread-20181-1-1.html

2019年12月28日补充:
目前新版本remove_header模块,支持删除浏览器请求CDN的Accept-Encoding值,直接删除,让其只缓存一份,可提高命中率
所以根据你的需要来进行是否删除。
https://bbs.itzmx.com/thread-94462-1-1.html

页: [1]
查看完整版本: kangle的删除Accept-Encoding头(内容过滤要选上)有什么用 为什么会提高缓存命中率