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

  • realmegt大师探索版是什么马达

    realmegt大师探索版是什么马达

  • word编号怎么自动排列下来(word编号怎么自动填充)

    word编号怎么自动排列下来(word编号怎么自动填充)

  • 抖音的视频怎么用剪映剪辑(抖音的视频怎么投屏到电视)

    抖音的视频怎么用剪映剪辑(抖音的视频怎么投屏到电视)

  • 如何让微信下星星雨(微信怎么下心)

    如何让微信下星星雨(微信怎么下心)

  • 1660和1060性能差别(1660和1060比)

    1660和1060性能差别(1660和1060比)

  • 抖音蓝v怎么取消(抖音蓝v怎么取消营业执照)

    抖音蓝v怎么取消(抖音蓝v怎么取消营业执照)

  • iphone原相机九宫格怎么弄(苹果手机相机九宫)

    iphone原相机九宫格怎么弄(苹果手机相机九宫)

  • 5g手机用4g卡网速会更快吗(5G手机用4g卡网速快吗)

    5g手机用4g卡网速会更快吗(5G手机用4g卡网速快吗)

  • 阻止此来电号码对方会听到什么(阻止此来电号码能收到短信吗)

    阻止此来电号码对方会听到什么(阻止此来电号码能收到短信吗)

  • 礼物墙有访问记录吗(礼物墙里的礼物是不是删不掉)

    礼物墙有访问记录吗(礼物墙里的礼物是不是删不掉)

  • 陌陌是啥(陌陌是啥时候出的)

    陌陌是啥(陌陌是啥时候出的)

  • 为什么抖音保存不了别人的视频(为什么抖音保存的视频发朋友圈很模糊)

    为什么抖音保存不了别人的视频(为什么抖音保存的视频发朋友圈很模糊)

  • 闽政通身份实名认证不通过(闽政通身份证认证不通过)

    闽政通身份实名认证不通过(闽政通身份证认证不通过)

  • 小电充电宝没有充电口(小电充电宝没有电了还会扣钱吗)

    小电充电宝没有充电口(小电充电宝没有电了还会扣钱吗)

  • 抖音收入音浪多久清零(抖音音浪收入分配)

    抖音收入音浪多久清零(抖音音浪收入分配)

  • oled烧屏啥意思(oled烧屏是什么意思)

    oled烧屏啥意思(oled烧屏是什么意思)

  • 什么叫海外购自营(什么叫海外购自营商品)

    什么叫海外购自营(什么叫海外购自营商品)

  • gpu缩放有什么用(gpu缩放有什么用吗)

    gpu缩放有什么用(gpu缩放有什么用吗)

  • 手机通话记录能查多久(手机通话记录能删除吗,怎样操作删除)

    手机通话记录能查多久(手机通话记录能删除吗,怎样操作删除)

  • 滴滴远程特惠是什么意思(滴滴远程特惠是几点到几点)

    滴滴远程特惠是什么意思(滴滴远程特惠是几点到几点)

  • 小米mix2s可以息屏显示吗(小米mix2s怎么设置屏幕熄灭的时间)

    小米mix2s可以息屏显示吗(小米mix2s怎么设置屏幕熄灭的时间)

  • 怎么把哔哩哔哩的视频下载到相册(怎么把哔哩哔哩的视频保存到电脑)

    怎么把哔哩哔哩的视频下载到相册(怎么把哔哩哔哩的视频保存到电脑)

  • 滴滴对公和不对公区别(滴滴对公和不对公派单区别)

    滴滴对公和不对公区别(滴滴对公和不对公派单区别)

  • iphone11有nfc吗(iphone11有nfc吗怎么使用)

    iphone11有nfc吗(iphone11有nfc吗怎么使用)

  • 荣耀7x怎么双卡切换(荣耀7x双卡为什么只能用一个卡)

    荣耀7x怎么双卡切换(荣耀7x双卡为什么只能用一个卡)

  • wps电子表格如何设置密码(wps电子表格如何调整行间距)

    wps电子表格如何设置密码(wps电子表格如何调整行间距)

  • 苹果8plus防水有多强(苹果8plus 防水)

    苹果8plus防水有多强(苹果8plus 防水)

  • Win7系统为什么会出现IPV6无网络访问权限?(win7系统为什么没有虚拟光驱)

    Win7系统为什么会出现IPV6无网络访问权限?(win7系统为什么没有虚拟光驱)

  • 税金及附加怎么来的
  • 公司买手表账务处理
  • 利润表中的所得税费用怎么填
  • 劳务工资入什么科目
  • 固定资产做错了怎么办
  • 代扣个人所得税现金流入哪个科目?
  • 纳税人少缴税款,税务机关发现之日怎么算
  • 合作社增值税免税项目
  • 预缴土地增值税需要计提吗
  • 城建税及教育费附加计提表
  • 增值税计提金额
  • 工会经费的缴费主体
  • 物业管理费属于应付账款吗
  • 物业营改增什么时候开始
  • 旅行社开的发票是否都要差额征税
  • 专用发票已认证怎么退回
  • 注册会计师考试科目有哪些
  • 高速过路费抵扣进项怎么填报
  • 小规模餐饮企业增值税申报表填写
  • 职工教育经费包括餐费吗
  • 进程核心栈
  • uniapp监听网络状态
  • 长期借款还款
  • 破产企业有清算费用吗
  • 文化传媒公司的部门
  • php框架运行机制
  • thinkphp6调用模型的方法
  • php获取访问者mac地址
  • Vue(ref和$refs属性介绍与使用)
  • 请求转发与重定义的区别
  • php递归函数桃子一天吃一半
  • 稳岗补贴什么时候到账
  • 代扣代缴的企业所得税计入成本吗
  • 建筑业总包增值税
  • 现金零星支出大还是小
  • 增值税免税收入账务处理
  • 物流企业财务流程
  • 借款合同 印花
  • 织梦如何添加浮动广告
  • Python解释器有哪几种
  • 两处取得收入,如何进行个税的申报?
  • 增值税进项税销项税月末需要结转吗
  • 补计提去年所得税会影响当月资产
  • 实行自行申报的项目有哪些
  • 核定征收和查账征收报税有区别吗
  • 出口退税后发生退货补缴怎么算增值税
  • 暂估入账的固定资产
  • 固定资产报废会计科目处理
  • 外贸企业的退税可以转出来吗
  • 应收款钱已收回会计分录
  • 政府给的专款专用的补助,怎么入账
  • 本年利润的会计科目
  • 公司打到个人账户的钱算公款吗
  • 一般纳税人先确认收入吗
  • 子公司的取得方式
  • 新手会计做账怎么做账
  • 在sql server中使用对象资源管理器和SQL
  • 把excel表格里的文字复制到word
  • centos如何添加用户
  • windows如何创建工作组
  • 使用注册表删除软件时,有些拒绝访问
  • mac怎么设置屏幕显示时间
  • xp系统修复怎么操作
  • ssh远程登录设置
  • cocos2d schedule
  • activity间数据传递
  • 如何大小写字母转换
  • 利用forever和pm2部署node.js项目过程
  • jquery的核心函数
  • 跟踪快件
  • jquery字体设置
  • Python中字符串的定界符
  • 治理体系治理能力十九届四中
  • 税务安装步骤
  • 捐赠收费吗
  • 重庆地税电子税务局app
  • 南京市车位产权证办理流程
  • 电子税务局密钥不一致
  • 青岛工商全程电子化
  • 四川省人口数据资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设