异常描述:tvt免费资源网
支付宝中内嵌h5项目(vue框架开发),前端重新打包上传之后访问页面会导致页面空白、页面tab点击异常之类异常情况,需要手动清除支付宝缓存才可以正常访问。tvt免费资源网
解决方案:tvt免费资源网
在HTTP协议中,只有后端返回 expires 或 Cache-Control:max-age=XXX, 前端才缓存。tvt免费资源网
但在浏览器中,默认会对 html css js 等静态文件、以及重定向进行缓存,如果在HEAD头中指定:tvt免费资源网
浏览器不会缓存html,但是还是会对重定向缓存,并且这种方式并不规范,可能有的浏览器不支持。tvt免费资源网
我的最终解决方案是:tvt免费资源网
1) 对hash过的静态文件还是采用默认方式,客户端会缓存。tvt免费资源网
2)对html文件,返回时增加头:Cache-Control,必须每次来服务端校验,根据etag返回200或者304tvt免费资源网
对应的nginx配置如下:tvt免费资源网
upstream example-be {
ip_hash;
server unix:/run/example-be.sock;
}
server{
listen 80; #监听端口
server_name example.com
# 后台api
location ~ ^/api {
proxy_set_header X-Forwarded-For $proxy_add_x