智能压缩,你了解几分?
关于“智能压缩”的功能,有几个问题和大家分享一下:(需要后台配置)
1、 如果源站开启了Gzip开关,是不需要在CDN的控制台上再开启“智能压缩”功能的
(1)源站开启Gzip,CDN控制台关闭“智能压缩”时的情况:
当客户端请求带有Gzip时,是可以返回Gzip压缩后的内容的。所以源站开启了Gzip,就不需要在控制台再开启“智能压缩”开关了。
当客户端请求没有Gzip时,没有命中缓存(Miss)的,说明CDN节点上还会缓存一份没有经过压缩的内容,也就是同时缓存一份压缩过,一份没有压缩过的两份内容。此时,CDN会根据客户端的请求是否带有Gzip来返回不同的缓存内容。
(2)由于现在的浏览器在请求时都会带上Accept-Encoding:gzip,
deflate, sdch 的请求头,所以源站响应的基本都是压缩后的内容,可以减少源站的带宽压力。
2、 如果源站没有开启Gzip开关,才需要在CDN控制台上开启“智能压缩”功能
但是不推荐这种方式,还是推荐客户使用“在源站开启Gzip的方式,CDN控制台上不必开启“智能压缩”功能”。
(1)源站关闭Gzip开关,CDN控制台开启“智能压缩”:
当客户端请求带有Gzip时,是可以返回Gzip压缩后的内容的。
当客户端请求没有Gzip时,也是命中缓存(Hit)的,说明CDN节点上只缓存了一份没有经过压缩的内容。(与CDN的研发核实,这种情况下,CDN上只有没有压缩的内容,当客户端请求带有Gzip时,每次请求,CDN节点都需要进行一次压缩计算,对CDN节点的性能有很大影响。同时这种情况下CDN回源时,源站吐出的是没有压缩过的内容,对源站的带宽压力也比较大。)
3、 有时源站开启了Gzip开关,但是当客户端请求带有Gzip时,没有返回Gzip压缩后的内容
这种情况,一般是由于CDN在回源时,请求中会带有Via的header,有些WEB服务无法正确的处理这个header,导致没有响应压缩后的内容:
针对这种情况,需要在源站进行配置,以Nginx为例,需要添加如下配置:
gzip_proxied any;
在此感谢各位童鞋阅读,如果能够对大家有所帮助,欢迎点赞转发。
同时欢迎扫码关注京东云技术中台团队的公众号:云服务飞行团;更多精彩内容会持续放送!