位置: 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 实现分角色注册登录界面

  • 微信可以两个手机一起登吗(微信可以两个手机同步聊天记录吗)

    微信可以两个手机一起登吗(微信可以两个手机同步聊天记录吗)

  • 抖音粉丝群里的助力票怎么弄(抖音粉丝群里的图片怎么保存)

    抖音粉丝群里的助力票怎么弄(抖音粉丝群里的图片怎么保存)

  • 华为p40有没有耳机孔呢(华为P40有没有耳机)

    华为p40有没有耳机孔呢(华为P40有没有耳机)

  • 苹果12送耳机吗(现在苹果12送耳机吗)

    苹果12送耳机吗(现在苹果12送耳机吗)

  • 红米note7屏幕失灵

    红米note7屏幕失灵

  • 手机后屏玻璃碎了对手机有什么危害(手机后屏玻璃碎了会爆炸吗)

    手机后屏玻璃碎了对手机有什么危害(手机后屏玻璃碎了会爆炸吗)

  • 桌面日期时间在哪设置(桌面时间显示日期)

    桌面日期时间在哪设置(桌面时间显示日期)

  • 荣耀v30有没有多功能截屏(荣耀v30有哪些新功能)

    荣耀v30有没有多功能截屏(荣耀v30有哪些新功能)

  • 钉钉直播时不能发语音(钉钉直播时不能拍照)

    钉钉直播时不能发语音(钉钉直播时不能拍照)

  • 小米手环4无法获取音乐(小米手环4无法开机怎么办)

    小米手环4无法获取音乐(小米手环4无法开机怎么办)

  • 抖音灯牌怎么设置(抖音灯牌怎么设置自动点亮)

    抖音灯牌怎么设置(抖音灯牌怎么设置自动点亮)

  • 手机打电话有回音和杂音是什么原因(手机打电话有回音是什么原因造成的)

    手机打电话有回音和杂音是什么原因(手机打电话有回音是什么原因造成的)

  • 腾讯视频投屏没有弹幕(腾讯视频投屏没声音怎么回事)

    腾讯视频投屏没有弹幕(腾讯视频投屏没声音怎么回事)

  • 怎么查看手机流量具体使用情况(怎么查看手机流量使用情况)

    怎么查看手机流量具体使用情况(怎么查看手机流量使用情况)

  • 你拨打的用户启用了语音信箱是什么意思(你拨打的用户启用来电提醒功能)

    你拨打的用户启用了语音信箱是什么意思(你拨打的用户启用来电提醒功能)

  • 呼叫发生旋转并且呼叫受限啥意思(呼叫发生旋转啥意思)

    呼叫发生旋转并且呼叫受限啥意思(呼叫发生旋转啥意思)

  • 淘宝评价心级怎么算(淘宝评价的心多久升一次)

    淘宝评价心级怎么算(淘宝评价的心多久升一次)

  • 大众点评点赞如何删除(大众点评点赞如何取消)

    大众点评点赞如何删除(大众点评点赞如何取消)

  • 抖音私信功能怎么解封(抖音私信功能怎么看什么时候解封)

    抖音私信功能怎么解封(抖音私信功能怎么看什么时候解封)

  • word让文字和数字竖排(word文字和数字都竖着怎么操作)

    word让文字和数字竖排(word文字和数字都竖着怎么操作)

  • 嗨开电的广告怎么关闭(嗨来电怎么关闭广告)

    嗨开电的广告怎么关闭(嗨来电怎么关闭广告)

  • 苹果自带倒计天数在哪(苹果自带倒计天数在怎么设置到屏幕)

    苹果自带倒计天数在哪(苹果自带倒计天数在怎么设置到屏幕)

  • 快手热门被屏蔽怎么查(快手号被屏蔽过了是不是就不能上热门)

    快手热门被屏蔽怎么查(快手号被屏蔽过了是不是就不能上热门)

  • 无线网电视没信号怎么办(无线网电视没信号是什么原因)

    无线网电视没信号怎么办(无线网电视没信号是什么原因)

  • 酷我如何开直播(酷我音乐直播可以投屏吗)

    酷我如何开直播(酷我音乐直播可以投屏吗)

  • 应用锁是什么(应用锁是什么意思)

    应用锁是什么(应用锁是什么意思)

  • 季度所得税资产总额怎么计算
  • 一般纳税人月底增值税如何结转
  • 银行利息月末结算方式
  • 法人资格证书是营业执照吗
  • 送现金券用什么活动语
  • 一般纳税人辅导期
  • 飞机票改签费用怎么算1000块
  • 购买固定资产进项税率
  • 收到法人的借款
  • 免费样品开具发票如何入账处理?
  • 购货方非增值税一般纳税人
  • 可供出售金融资产和长期股权投资
  • 营改增后在建工程转让应缴纳税费有哪些
  • 个人怎么开增值税
  • 没有认证方式
  • 印花税购销比例
  • 转股交印花税的优惠政策
  • 白酒五行属火还是水
  • 参加展会的住宿费计入什么科目
  • 房地产记账凭证
  • win10如何设置快捷键截图
  • win11专业版网卡安不了
  • ghost windows10安装教程
  • g++.exe error
  • 格里戈里耶奈尔尤伯夫
  • 大学网页制作作业dw
  • 没有发票怎么做研发费用
  • 注销公司的处理方式
  • 深度学习之bottleneck layer
  • 房地产企业汇算清缴资料
  • 电子承兑接收了,但是后来怎么没有了
  • 提取法定盈余公积的公式
  • 织梦如何添加浮动广告
  • 特惠贷贴息金额怎么算的
  • 研发人员旅游能计入研发费用吗
  • 企业开办期间费用需要开发票吗
  • 退税流程怎么操作个人所得税2022
  • 专利银行汇款操作步骤
  • 全年多少钱就得交税
  • access speed
  • 长期资产的减值会影响CFO吗
  • 跨年租金收入如何入账
  • sql server2014教程
  • 金税四期怎么监管消费和发票
  • 关于预计净残值的计算题及答案
  • 汇算清缴银行手续费放哪里
  • 居民和非居民企业的区别是什么
  • 单位定期存单利息如何记账
  • 发票冲红如何做账红字发票需要给购买方吗
  • 职工宿舍怎么入账
  • 土地流转的基本原则包括哪些
  • 收到红字进项发票先勾选再做转出吗
  • 电汇凭证有效期
  • 直租业务可以抵房租吗
  • 库存现金过多的隐患
  • sql server 获取今天的数据
  • mysql查看当前执行的sql
  • windows2003服务
  • freebsd操作命令
  • hppusg.exe
  • mac怎么添加桌面
  • 硬盘安装win8.1
  • win8商店还能用吗
  • windows10磁盘
  • windows7如何设置双屏显示
  • centos 安装
  • win7任务栏透明调不了
  • win8安装盘
  • windows alt r
  • 脚本语言教程
  • jquery2
  • 安卓的通用在哪里
  • unity 2danimation
  • Android自定义标签选择面板,自定义ViewGroup
  • c#string stringbuilder
  • 销售车位需要交房产税吗
  • 营改增后一般纳税人动产租赁税率
  • 开票金额有限额吗
  • 营业税属于地方税
  • 许昌祥和小区二手房出售
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设