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 设计模式 富有表现力的Javascript(一)
May 26 Javascript
jQeury淡入淡出需要注意的问题
Sep 08 Javascript
js局部刷新页面时间具体实现
Jul 04 Javascript
解决Jquery load()加载GB2312页面时出现乱码的两种方案
Sep 10 Javascript
jQuery简单实现遍历数组的方法
Apr 14 Javascript
JS组件Bootstrap Table使用方法详解
Feb 02 Javascript
利用BootStrap弹出二级对话框的简单实现方法
Sep 21 Javascript
Bootstrap下拉菜单样式
Feb 07 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
Oct 09 Javascript
详解javascript中的变量提升和函数提升
May 24 Javascript
gulp构建小程序的方法步骤
May 31 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 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维护文件系统
2006/10/09 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
php实现对象克隆的方法
2015/06/20 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
通过python3实现投票功能代码实例
2019/09/26 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
如何用Django处理gzip数据流
2021/01/29 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
哈理工毕业生的求职信
2013/12/22 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
先进员工事迹材料
2014/12/20 职场文书
解除同居协议书
2015/01/29 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书