vue项目强制清除页面缓存的例子


Posted in Javascript onNovember 06, 2019

异常描述:

支付宝中内嵌h5项目(vue框架开发),前端重新打包上传之后访问页面会导致页面空白、页面tab点击异常之类异常情况,需要手动清除支付宝缓存才可以正常访问。

解决方案:

在HTTP协议中,只有后端返回 expires 或 Cache-Control:max-age=XXX, 前端才缓存。

但在浏览器中,默认会对 html css js 等静态文件、以及重定向进行缓存,如果在HEAD头中指定:

<HEAD>
<METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
<METAHTTP-EQUIV="Expires"CONTENT="0">
</HEAD>

浏览器不会缓存html,但是还是会对重定向缓存,并且这种方式并不规范,可能有的浏览器不支持。

我的最终解决方案是:

1) 对hash过的静态文件还是采用默认方式,客户端会缓存。

2)对html文件,返回时增加头:Cache-Control,必须每次来服务端校验,根据etag返回200或者304

对应的nginx配置如下:

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_forwarded_for;


include uwsgi_params;

  uwsgi_pass example-be;
  }


# 前端静态文件

location ~* \.(gif|jpg|jpeg|png|css|js|ico|eot|otf|fon|font|ttf|ttc|woff|woff2)$ {


root /var/www/example-fe/dist/;

}


# 前端html文件

location / {


# disable cache html


add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';



root /var/www/example-fe/dist/;


index index.html index.htm;


try_files $uri /index.html;

}
}

由于浏览器缓存静态文件的时间不可控,我们可以在nginx上自己配置expires 1M(1个月)

# 前端静态文件

location ~* \.(gif|jpg|jpeg|png|css|js|ico|eot|otf|fon|font|ttf|ttc|woff|woff2)$ {
 root /var/www/example-fe/dist/;
 
expires 1M;
 
add_header Cache-Control "public";
 }

以上这篇vue项目强制清除页面缓存的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript的解析执行顺序在各个浏览器中的不同
Mar 17 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
Mar 27 Javascript
JavaScript去除数组里重复值的方法
Jul 13 Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 Javascript
详解JavaScript函数
Dec 01 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
js闭包用法实例详解
Dec 13 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
Feb 10 Javascript
详解用webpack2.0构建vue2.0超详细精简版
Apr 05 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
Sep 16 Javascript
js实现带箭头的进度流程
Mar 26 Javascript
Vue-resource安装过程及使用方法解析
Jul 21 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 #Javascript
JS实现随机抽取三人
Nov 06 #Javascript
Node对CommonJS的模块规范
Nov 06 #Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 #Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 #Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 05 #Javascript
js+html实现点名系统功能
Nov 05 #Javascript
You might like
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
超级简单的图片防盗(HTML),好用
2007/04/08 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
Golang与python线程详解及简单实例
2017/04/27 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
python中的colorlog库使用详解
2019/07/05 Python
python实现按首字母分类查找功能
2019/10/31 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
在python3中实现更新界面
2020/02/21 Python
如何使用python写截屏小工具
2020/09/29 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
大学生志愿者感言
2014/01/15 职场文书
文明学生标兵事迹
2014/01/21 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
教职工代表大会主持词
2014/04/01 职场文书
内科护士节演讲稿
2014/09/11 职场文书
家长会欢迎词
2015/01/23 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
党支部季度考核意见
2015/06/02 职场文书
环保证明
2015/06/23 职场文书
java中重写父类方法加不加@Override详解
2021/06/21 Java/Android