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

  • 微信营销方法很多,而你只是需要找到适合你的那一种(微信营销主要手段和技巧)

    微信营销方法很多,而你只是需要找到适合你的那一种(微信营销主要手段和技巧)

  • vivo怎么退出原子桌面(vivo怎么退出原子组件)

    vivo怎么退出原子桌面(vivo怎么退出原子组件)

  • 支付宝怎么看好友的注册方式(支付宝怎么看好友步数)

    支付宝怎么看好友的注册方式(支付宝怎么看好友步数)

  • 华为nova4和nova5的区别(华为nova4和nova5外观一样吗)

    华为nova4和nova5的区别(华为nova4和nova5外观一样吗)

  • 苹果11怎么所有都静音了(苹果11全部设置)

    苹果11怎么所有都静音了(苹果11全部设置)

  • 苹果出现长方形透明框(苹果出现长方形框怎么取消)

    苹果出现长方形透明框(苹果出现长方形框怎么取消)

  • 安装电池的时候应注意哪些问题(安装电池的时候应注意哪些)

    安装电池的时候应注意哪些问题(安装电池的时候应注意哪些)

  • 无线网需要认证登录怎么回事(无线网需要认证登录怎么操作)

    无线网需要认证登录怎么回事(无线网需要认证登录怎么操作)

  • 华为nova6和nova7对比(华为nova6和nova7哪个好)

    华为nova6和nova7对比(华为nova6和nova7哪个好)

  • 抖音直播房间封禁是怎么回事(抖音直播房间封禁是什么意思)

    抖音直播房间封禁是怎么回事(抖音直播房间封禁是什么意思)

  • 索尼8500g和8588g区别(索尼8500G和8500D的区别)

    索尼8500g和8588g区别(索尼8500G和8500D的区别)

  • 双耳蓝牙耳机可以分开使用吗(双耳蓝牙耳机可以分开连接两个手机吗)

    双耳蓝牙耳机可以分开使用吗(双耳蓝牙耳机可以分开连接两个手机吗)

  • 快手管理员有两个级别(快手管理员是啥意思)

    快手管理员有两个级别(快手管理员是啥意思)

  • 微控制器由什么组成(微控制器包括)

    微控制器由什么组成(微控制器包括)

  • 手机卡停机怎么查话费(手机卡停机怎么回事)

    手机卡停机怎么查话费(手机卡停机怎么回事)

  • 苹果手机返厂要发票吗(苹果手机返厂要抹掉数据吗)

    苹果手机返厂要发票吗(苹果手机返厂要抹掉数据吗)

  • 抖音号怎么解除手机号绑定(抖音号怎么解除企业认证)

    抖音号怎么解除手机号绑定(抖音号怎么解除企业认证)

  • 小米9是立体声双扬声器吗(小米9立体声如何开启)

    小米9是立体声双扬声器吗(小米9立体声如何开启)

  • 小米mde6s配置参数(小米mde6什么型号)

    小米mde6s配置参数(小米mde6什么型号)

  • b站粉丝勋章怎么升级快(B站粉丝勋章怎么去掉)

    b站粉丝勋章怎么升级快(B站粉丝勋章怎么去掉)

  • 5g网络有什么功能(5g网络用来干嘛的)

    5g网络有什么功能(5g网络用来干嘛的)

  • pbemoo是什么手机型号(pbfmoo是什么手机)

    pbemoo是什么手机型号(pbfmoo是什么手机)

  • 小米手环3睡眠监测原理(小米手环3睡眠监测需要设置时间吗)

    小米手环3睡眠监测原理(小米手环3睡眠监测需要设置时间吗)

  • 爱奇艺如何找回密码(爱奇艺如何找回自己原来的头像和名字)

    爱奇艺如何找回密码(爱奇艺如何找回自己原来的头像和名字)

  • imu内参标定(内外参标定)

    imu内参标定(内外参标定)

  • 收入纳税数据是什么意思
  • 车保保险合同
  • 个人将租用的商铺怎么办
  • 纳税标准怎么算
  • 关联企业的判定标准
  • 公司购进一台不需要安装的设备设备价款为700万元
  • 建筑企业可以挂靠吗
  • 审计助理是做什么工作的
  • 银行承兑的商业汇票计入什么科目
  • 不是公司员工可以举报公司不交社保吗
  • 新公司开基本户银行选择
  • 全额计提坏账准备后,多久核销应收账款
  • 退回以前年度工资怎么做账
  • 当地外包公司是干什么的
  • 开了负数发票增值税申报表怎么填
  • 新成立的公司要去税务局办理什么
  • 辞退员工补偿的月平均工资如何计算
  • 开出银行汇票支付手续费
  • 不再认证时段内
  • 每月增值税怎么做账
  • 网银转账手续费标准
  • 股权转让以前年度怎么算
  • 小规模纳税人代收水电费税率
  • 事业单位事业收入和经营收入要上缴财政
  • 补提以前年度摊销
  • 非绑定账户转入啥意思
  • 文化事业建设费税收优惠政策2023
  • 期末增值税如何结转
  • 谨慎性原则的具体体现有哪些
  • 公司运输车辆加油会计分录
  • 收到投资方投入原材料
  • 汇算清缴后补缴企业所得税账务处理
  • 挂靠借用资质账务处理?
  • wordpress介绍
  • 季度利润表中的营业收入怎么算
  • php pop
  • id3决策树伪代码
  • 残保金是应交税金吗
  • 对公取款
  • 因质量原因退货和召回的产品,均应按照规定
  • 抄税前要做什么
  • 收到银联代收短信
  • 企业确认收入实现的条件有哪些?
  • mongodb基础知识
  • 逆回购划算吗
  • sql server如何查看本地的登录名和密码
  • 个人抬头的发票可以入账吗
  • 收到返款计入什么科目
  • MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问
  • 涉及无形资产的会计处理
  • 固定资产到期后继续使用
  • 资源税会计科目
  • 进项认证怎么算
  • 预期年化收益率安全吗
  • 存货报废如何做账
  • 未达起征点怎么报税
  • 个人账号可以向对公账户转账吗
  • 两家公司
  • 数电怎么增加开票员
  • 无建账能力的纳税人是什么意思
  • 如何进行企业建账
  • sql游标怎么用
  • win10预览版21390
  • win10预览版好吗
  • Win7 64位纯净版无法安装第三方主题的可行破解方法
  • win8无法关机一直转圈
  • Win10 Mobile10586.122更新了哪些内容?更新内容大全汇总
  • 腾讯im sdk
  • js 仿真
  • 批处理自动登录有密码的程序
  • node.js详解
  • linux如何查看当前shell
  • android 快速开发工具
  • python生成pyc
  • 你知道什么是布
  • python中私有函数调用方法解密
  • 真机调试什么意思
  • 税控盘怎么领用
  • 百旺开票软件打不开怎么回事
  • 湖北退役士兵退伍费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设