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 相关文章推荐
firefox中JS读取XML文件
Dec 21 Javascript
javaScript中Math()函数注意事项
Jun 18 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
Aug 10 Javascript
JSON+Jquery省市区三级联动
Jan 13 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
javascript设计模式之单体模式学习笔记
Feb 15 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
vue实现后台管理权限系统及顶栏三级菜单显示功能
Jun 19 Javascript
jQuery事件委托代码实践详解
Jun 21 jQuery
微信小程序如何修改radio和checkbox的默认样式和图标
Jul 24 Javascript
vue npm install 安装某个指定的版本操作
Aug 11 Javascript
JS实现购物车基本功能
Nov 08 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 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
基于jQuery架构javascript基础体系
2011/01/01 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
python机器学习之神经网络(一)
2017/12/20 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Jupyter加载文件的实现方法
2020/04/14 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
幼儿园法制宣传日活动总结
2014/11/01 职场文书
英语复习计划
2015/01/19 职场文书
联谊活动总结范文
2015/05/09 职场文书
初中生物教学随笔
2015/08/15 职场文书
2016公司新年问候语
2015/11/11 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
SQL基础查询和LINQ集成化查询
2022/01/18 MySQL