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 相关文章推荐
XHTML-Strict 内允许出现的标签
Dec 11 Javascript
js用闭包遍历树状数组的方法
Mar 19 Javascript
JS实现可调整倒计时间代码分享
Aug 18 Javascript
学习JavaScript设计模式(链式调用)
Nov 26 Javascript
JS实现的简单表单验证功能示例
Oct 13 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
JavaScript中的E-mail 地址格式验证
Mar 28 Javascript
详解Chart.js轻量级图表库的使用经验
May 22 Javascript
Vue动态组件和异步组件原理详解
May 06 Javascript
原生javascript中this几种常见用法总结
Feb 24 Javascript
javascript实现简易计算器功能
Sep 23 Javascript
详解实现vue的数据响应式原理
Jan 20 Vue.js
关于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+Html+缓存
2006/11/25 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
javascript 仿QQ滑动菜单效果代码
2010/09/03 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
javascript的delete运算符知识点总结
2019/11/19 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
日期和时间问题
2015/01/04 面试题
自我鉴定书
2014/03/24 职场文书
北京奥运会主题口号
2014/06/13 职场文书
班级心理活动总结
2014/07/04 职场文书
小学生植树节活动总结
2014/07/04 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python