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调用XML制作连动下拉列表框
Jun 25 Javascript
javascript之解决IE下不渲染的bug
Jun 29 Javascript
JavaScript 检测浏览器和操作系统的脚本
Dec 26 Javascript
JavaScript DOM 添加事件
Feb 14 Javascript
动态标签 悬停效果 延迟加载示例代码
Nov 21 Javascript
jQuery三级下拉列表导航菜单代码分享
Apr 15 Javascript
javascript实现方法调用与方法触发小结
Mar 26 Javascript
Backbone View 之间通信的三种方式
Aug 09 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
Oct 10 Javascript
Vue-Cli中自定义过滤器的实现代码
Aug 12 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
Sep 07 Javascript
vue watch监控对象的简单方法示例
Jan 07 Vue.js
关于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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
js substr、substring和slice使用说明小记
2011/09/15 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
python定时器使用示例分享
2014/02/16 Python
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
python的help函数如何使用
2020/06/11 Python
使用python编写一个语音朗读闹钟功能的示例代码
2020/07/14 Python
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
社区活动邀请函范文
2014/01/29 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
我有一个梦想演讲稿
2014/05/05 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
音乐课外活动总结
2015/05/09 职场文书
紧急迫降观后感
2015/06/15 职场文书
军训阅兵新闻稿
2015/07/17 职场文书
《小小的船》教学反思
2016/02/18 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers