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文件的函数代码分享
Jul 28 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
Feb 16 Javascript
javascript中Number对象的toString()方法分析
Dec 20 Javascript
jQuery实现简单的DIV拖动效果
Feb 19 Javascript
VUEJS实战之构建基础并渲染出列表(1)
Jun 13 Javascript
JS中使用FormData上传文件、图片的方法
Aug 07 Javascript
原生和jQuery的ajax用法详解
Jan 23 Javascript
Bootstrap3 模态框使用实例
Feb 22 Javascript
基于vue和react的spa进行按需加载的实现方法
Sep 29 Javascript
eslint 的三大通用规则详解
May 16 Javascript
js模拟实现百度搜索
Jun 28 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
新浪新闻小偷
2006/10/09 PHP
通过html表格发电子邮件
2006/10/09 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
php头像上传预览实例代码
2017/05/02 PHP
extjs两个tbar问题探讨
2013/08/08 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
Python的Django框架中settings文件的部署建议
2015/05/30 Python
python创建临时文件夹的方法
2015/07/06 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
python list转置和前后反转的例子
2019/08/26 Python
详解python中各种文件打开模式
2020/01/19 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
澳大利亚排名第一的儿童在线玩具商店:Toy Galaxy
2018/10/06 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
美发店5.1活动方案
2014/01/24 职场文书
贷款委托书范本
2014/04/08 职场文书
C++程序员求职信
2014/05/07 职场文书
小学教师师德整改措施
2014/09/29 职场文书
员工家属慰问信
2015/03/24 职场文书