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 相关文章推荐
js location.replace与location.reload的区别
Sep 08 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
Jul 11 Javascript
jQuery div拖拽用法实例
Jan 14 Javascript
Backbone.js框架中Model与Collection的使用实例
May 07 Javascript
详解vue.js组件化开发实践
Dec 14 Javascript
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 Javascript
利用10行js代码实现上下滚动公告效果
Dec 08 Javascript
postman+json+springmvc测试批量添加实例
Mar 31 Javascript
JS+CSS3实现的简易钟表效果示例
Apr 13 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 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 什么是PEAR?(第三篇)
2009/03/19 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
jquery中的sortable排序之后的保存状态的解决方法
2010/01/28 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
2016/10/16 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
Python实现的双色球生成功能示例
2017/12/18 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
对Python中内置异常层次结构详解
2018/10/18 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
python生成requirements.txt的两种方法
2019/09/18 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
Python requests获取网页常用方法解析
2020/02/20 Python
浅谈Python中的继承
2020/06/19 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
Shell如何接收变量输入
2012/09/24 面试题
银行业务授权委托书
2014/10/10 职场文书
建国大业观后感800字
2015/06/01 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
Nginx速查手册及常见问题
2022/04/07 Servers