位置: IT常识 - 正文

完美解决 - 前端发版后浏览器缓存问题(发版后及时拉取最新版本代码)(前端lru)

编辑:rootadmin
完美解决 - 前端发版后浏览器缓存问题(发版后及时拉取最新版本代码) 一、简介

推荐整理分享完美解决 - 前端发版后浏览器缓存问题(发版后及时拉取最新版本代码)(前端lru),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端bug及解决方法,前端yck,前端yck,前端bug及解决方法,前端遇到问题怎么解决,【前端 】,【前端 】,【前端 】,内容如对您有帮助,希望把文章链接给更多的朋友!

开发完发布新版本后,在有些电脑上总需要强刷才能获取到最新版本的内容,太恶心了。

浏览器缓存(Browser Caching)是为了节约网络的资源加速浏览,浏览器在用户磁盘上对最近请求过的文档进行存储,当访问者再次请求这个页面时,浏览器就可以从本地磁盘显示文档,这样就可以加速页面的阅览。

附:前端缓存详解,看了这篇更容易理解缓存配置的概念,浏览器缓存主要有两类:协商缓存 和 彻底(强)缓存。

例如:program、cache-control 和 expires 都是前端缓存的关键字段,优先级是 pragma > cache-control > expires,pragma 是旧产物,已经逐步抛弃,有些网站为了向下兼容还保留了这个字段。

二、解决方案1、在 .html 页面加 meta 标签<meta http-equiv="pragram" content="no-cache"><meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"><meta http-equiv="expires" content="0">2、后端 nginx 配置,让 index.html 不缓存完美解决 - 前端发版后浏览器缓存问题(发版后及时拉取最新版本代码)(前端lru)

vue 默认配置,打包后 css 和 js 的名字后面都加了哈希值,不会有缓存问题,但是 index.html 在服务器端可能是有缓存的,需要在服务器配置不让缓存 index.html。

location = /index.html { add_header Cache-Control "no-cache, no-store";}3、使用 Vue 脚手架的情况下:vue.config.js// 动态版本号const version = new Date().getTime()// 配置module.exports = { devServer: {}, filenameHashing: false, // 打包的时候不使用 hash 值,因为后面自行添加时间戳或者版本号了 css: { // 是否使用 css 分离插件 ExtractTextPlugin extract: { // 输出编译后的文件名称:【文件名称.时间戳】、【文件名称.版本号.时间戳】... filename: `css/[name].${version}.css`, chunkFilename: `css/[name].${version}.css` // filename: `css/[name].${process.env.VUE_APP_VERSION}.${version}.css`, // chunkFilename: `css/[name].${process.env.VUE_APP_VERSION}.${version}.css` } }, configureWebpack: { output: { // 输出编译后的文件名称:【文件名称.时间戳】、【文件名称.版本号.时间戳】... filename: `js/[name].${version}.js`, chunkFilename: `js/[name].${version}.js` // filename: `js/[name].${process.env.VUE_APP_VERSION}.${version}.js`, // chunkFilename: `js/[name].${process.env.VUE_APP_VERSION}.${version}.js` } }}4、使用 webpack 的情况下:webpack.config.jsconst date = new Date()const version = moment(date).format('YYYYMMDDHHmmssSSS') // 打包时候的版本号const timestamp = date.getTime() // 时间戳// 注意需下面这段放到配置导出中output: { path: config.build.assetsRoot, filename: utils.assetsPath(`js/[name].[chunkhash:8].${ version }.js?_t=${ timestamp }`), chunkFilename: utils.assetsPath(`js/[name].[chunkhash:8].${ version }.js?_t=${ timestamp }`)}5、有新版本发布,及时拉取最新版本代码

有时候发布了新版本,用户不刷新或强制刷新,一直不能看不到最新版本代码,则封装了套在切换页面时检查服务器是否有新版本,有新版本则直接强制刷新拉取最新版本代码,这样也解决了缓存问题,切换页面就能及时同步到最新版本代码,使用也简单,导入之后两步小操作就能支持。

支持 vue、react、原生 ... 项目使用。

version.js 下载地址,下载后导入项目任意工具文件夹即可。

vue 项目导入方式:在 src 文件夹中使用可以 const version = require('@/utils/version') 这样引入使用,在根目录也就是 src 之外的文件夹则只能 const version = require('./src/utils/version') 这样引入使用。

使用方式,只需要 两个位置导入使用 即可:

1、「如果是原生开发,第一步可以改为手动创建文件,并每次修改版本号即可」在打包配置文件中(例如:vue.config.js)创建版本文件,因为只需要 build 时才需要创建版本文件,版本文件以时间戳为版本号,所以不需要操心。

// 在 build 时,每次创建/更新版本文件const version = require('./src/utils/version')version.create()

2、打包有了版本号,发布上去后,那就需要拉回来校验是否有新版本,所以推荐放到路由守卫里面检查,这个网络要求不高,怕影响跳转体验无感,可以放置在 路由跳转后 的回调中操作,这样更新版本了,切换页面,发现有新版本直接强刷到最新版本。

import router from '@/router'const version = require('@/utils/version')// 路由跳转后执行router.afterEach((to, from) => {// 如果不想每个路由都检查是否有新版本,只需要在特定的页面才需要检查版本,可以在这里做白名单判断// 兼容版本,如果是新版本则进行刷新并缓存version.getPro()})// 路由跳转前执行router.beforeEach((to, from, next) => {next()})

本文链接地址:https://www.jiuchutong.com/zhishi/283477.html 转载请保留说明!

上一篇:牛肉炖萝卜的做法[多图](牛肉炖萝卜的做法高压锅)

下一篇:springboot+vue+elementsUI 实现分角色注册登录界面

  • 房地产开发企业简易计税方法 可以扣除吗
  • 关于办理退税手续的通知
  • 印花税票是什么税种
  • 支付的各项税费现金流量表怎么填
  • 评估入账几种情况
  • 企业出售商铺需要预缴增值税吗
  • 赔偿损失费用发票怎么开
  • 土建工程维修
  • 什么情况下要交土地出让金
  • 处置子公司全部股权会计处理 企业会计准则
  • 加工费的计提工资账务处理
  • 交了定金签了合同
  • 未确认融资费用是一级科目吗
  • 出纳人员怎么核酸检测
  • 跨年度费用怎么入账
  • 抵扣上月留抵税额的分录
  • 出售车辆需要缴纳哪些税
  • 发票是不是都一样
  • 非居民企业减免的利息是否交增值税
  • 建筑业简易征收差额征税的计算案例
  • 电子营业执照可以开通抖音小店吗
  • 免抵退说
  • 报税遇节假日延长吗?
  • 残保金退回属于政府补助吗
  • 垃圾清运属于什么大类
  • 增值税及附加税费减免一览表
  • 总承包简易计税
  • 客户罚款记哪个科目
  • 利用网速测试器测试
  • php 数组
  • 结转工程成本属于什么会计科目
  • win10回滚系统
  • PHP:proc_close()的用法_命令行函数
  • html里写php
  • php import
  • 以前年度损益调整结转到哪里
  • 预提的奖金能不能提前申报个税
  • php乱码解密
  • 如何更改telnet端口
  • 个税显示申报成功是不是就可以了
  • 余额百分比法计提坏账准备
  • 小规模没有税控怎么开普票
  • 公司个人借款如何做账
  • 深入浅出夏寒陆行全文免费阅读笔趣阁番外
  • 控股公司的收入怎么计算
  • 购买固定资产会计凭证
  • 小规模减免的增值税
  • 企业所得税业务招待费怎么调整
  • 商誉的会计核算怎么核算
  • 公司车过户给个人多久不用补税
  • 现金流量表补充资料的作用
  • 定额征收个体户如何交所得税
  • 企业营业利润率怎么算
  • 发票已经认证是什么意思
  • 进项票取得晚了怎么抵扣
  • 用SQL脚本读取Excel中的sheet数量及名称的方法代码
  • win8.1升级到win10
  • Windows XP with SP2/SP3 原版下载汇总
  • windowsxp收藏夹在哪
  • linux -al
  • win7系统电脑怎么连接热点
  • 关于激活剂的叙述正确的是
  • 怎么设置虚拟硬盘储存路径
  • win8无法使用内置管理员账户打开ie
  • cocos开发android游戏
  • mac安装osx失败
  • 焦点轮播图代码
  • linux用c语言实现命令功能
  • html网站首页
  • python整理表格不用入门
  • node.js异步编程
  • Unity uGui RawImage 渲染小地图
  • JavaScript基础教程
  • javascript要怎么学
  • 安卓中的菜单
  • python爬取三国演义前六章
  • python中的格式化输出用法总结
  • 北京税务跨区迁移不予受理,原因是什么
  • 个人所得税完税证明图片
  • 车辆购置税是国家收还是地方收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设