最近遇到一个诡异的问题,就是一个svg文件,走cdn和不走cdn下载下来的结果不一样,结果发现是由于该svg比较大,触发了服务端的压缩算法,而根据请求头里accept-encoding的不同,触发的压缩算法可能是gzip,也可能是br。所以,CDN的缓存key必须要将accept-encoding考虑在内。
在请求图片时,会根据不同的accept,决定是返回webp还是png/jpg,所以请求头accept也是CDN缓存需要考虑的。由此可见,更好的技术的使用,却带来了缓存效率的降低,所以新技术到底带来多少好处,可能远比预估来得少。
这里分别记录一下阿里云和aws下CDN缓存key的配置。
配置如下图:
在aws里CDN取名叫CloudFront,首先要创建缓存策略(Policies):
特别注意:aws默认帮用户考虑了accep-encoding的gzip和br问题,所以如果要自行处理该缓存key,就需要取消掉其他默认的gzip和br识别的支持,否则策略保存会报错。
接着就是在分发域名里绑定创建的策略,具体就是CloudFront -> Distributions -> Create Behavior: