需求场景
在单页应用中,只有一个html页面,网站的大部分css,js等资源引用都写在这个html中,当更新css,js的随机数然后发布时,由于客户端缓存了html,并不能及时更新。
解决方案
location / {
try_files $uri $uri/ /index.html;
if ($uri ~* .*\.(?:htm|html)$) {
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
if ($uri ~* .*\.(?:js|css|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$) {
expires 7d;
}
}
微信环境解决方案
微信环境中html的缓存也是一直遭人诟病的。在普通浏览器中,只需要将html后面也加一个随机数,就可以不缓存html,或者在meta标签中添加标识,又或者如上的nginx配置。而在微信浏览器中这些方法都是无效的。
if ($uri ~* .*\.(?:htm|html)$) {
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
add_header Last-Modified $date_gmt;
}