因为使用cdn的缓存,发现前端写的代码总是不生效,开始以为是cdn的问题,最后发现问题是出在nginx层.
只需要在nginx层设置成下面的配置就可以让前端代码生效了
location / {
# First attempt to serve request as file, then
# as directory, then fall back to a 404.
try_files $uri $uri/ =404;
add_header Cache-Control no-cache;
add_header Cache-Control private;
#设置缓存上面定义的后缀文件缓存到浏览器的生存时间
expires -1s;
}
修改:上面的配置会出现一个问题
首先cdn缓存会因为上面的配置不生效,cdn会针对加了expires -1s和no-cache的关键字提高不缓存的优先级.所以就会出现静态资源无法加速.
所以上面的配置虽然解决了每次前端代码的缓存问题,但是也让页面的响应效率下降了.
根本性解决问题:
阿里云提供cdn缓存的刷新和预热.
刷新:指将cdn服务器的缓存给清理掉.
预热:指将页面或接口(我用了全站接口,所以接口也可以动态缓存优化)预先进行访问,就会提前将缓存预热到cdn中,那么客户访问时就直接是最新的缓存数据.提升速度.
终极方案:是通过前端发布时用jenkins进行打包发布到服务器时触发阿里云的自动刷新和预热py脚本.这样就能一站式解决刷新预热问题.