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 相关文章推荐
jquery tools 系列 scrollable学习
Sep 06 Javascript
让元素在网页中可拖动示例代码
Aug 13 Javascript
node.js中的url.format方法使用说明
Dec 10 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
Mar 21 Javascript
jquery仿微信聊天界面
May 06 jQuery
使用JavaScript实现alert的实例代码
Jul 06 Javascript
bootstrap-table组合表头的实现方法
Sep 07 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
小程序自定义单页面、全局导航栏的实现代码
Mar 15 Javascript
JS获取表格视图所选行号的ids过程解析
Feb 21 Javascript
React中Ref 的使用方法详解
Apr 28 Javascript
vue项目实现减少app.js和vender.js的体积操作
Nov 12 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学习 函数 课件
2008/06/15 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
获取URL文件名后缀
2013/10/24 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
js脚本学习 比较实用的基础
2006/09/07 Javascript
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
koa2的中间件功能及应用示例
2020/03/05 Javascript
python 查找字符串是否存在实例详解
2017/01/20 Python
查看django版本的方法分享
2018/05/14 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
python对文件的操作方法汇总
2020/02/28 Python
Python中私有属性的定义方式
2020/03/05 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
网络优化专员求职信
2014/05/04 职场文书
中秋节感想
2015/08/10 职场文书
新学期开学寄语2016
2015/12/04 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python