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复选框checkbox实现删除前判断
Apr 20 Javascript
JavaScript中的无阻塞加载性能优化方案
Oct 10 Javascript
后台获取ZTREE选中节点的方法
Feb 12 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 Javascript
微信小程序登录态控制深入分析
Apr 12 Javascript
JS实现电商放大镜效果
Aug 24 Javascript
AngularJS实现的简单拖拽功能示例
Jan 02 Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
Aug 30 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
Aug 19 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 动态随机生成验证码类代码
2010/04/09 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
Python-嵌套列表list的全面解析
2016/06/08 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
澳大利亚领先的在线美容商店:Facial Co
2017/10/22 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
医药工作者的求职信范文
2013/09/21 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
大学生就业自荐书
2014/06/16 职场文书
会计人员演讲稿
2014/09/11 职场文书
面试复试通知单
2015/04/24 职场文书
爱国影片观后感
2015/06/18 职场文书
导游词之杭州西湖
2019/09/19 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
Golang入门之计时器
2022/05/04 Golang