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 Xml增删改查(IE下)操作实现代码
Jan 30 Javascript
js 跨域和ajax 跨域问题小结
Jul 01 Javascript
js中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
如何使用Javascript获取距今n天前的日期
Jul 08 Javascript
jQuery $.each遍历对象、数组用法实例
Apr 16 Javascript
基于jquery css3实现点击动画弹出表单源码特效
Aug 31 Javascript
Node调用Java的示例代码
Sep 20 Javascript
js解决软键盘遮挡输入框的问题分享
Dec 19 Javascript
vue 中几种传值方法(3种)
Nov 12 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
jQuery实现动态加载瀑布流
Sep 01 jQuery
JavaScript 防抖和节流遇见的奇怪问题及解决
Nov 20 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实现的随机IP函数【国内IP段】
2016/07/20 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
简单说明Python中的装饰器的用法
2015/04/24 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
python素数筛选法浅析
2018/03/19 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
如何使用Python实现斐波那契数列
2019/07/02 Python
django-filter和普通查询的例子
2019/08/12 Python
Python如何调用JS文件中的函数
2019/08/16 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
Python用SSH连接到网络设备
2021/02/18 Python
思想品德自我评价
2014/02/04 职场文书
医院总经理岗位职责
2014/02/04 职场文书
优秀员工获奖感言
2014/03/01 职场文书
租房协议书范本
2014/04/09 职场文书
研修心得体会
2014/09/04 职场文书
中级会计大学生职业生涯规划书
2014/09/16 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
Go语言测试库testify使用学习
2022/07/23 Golang