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

  • 百度贴吧推广技巧知多少?(百度贴吧推广技巧)

    百度贴吧推广技巧知多少?(百度贴吧推广技巧)

  • 小米如何分屏(小米如何分屏幕)

    小米如何分屏(小米如何分屏幕)

  • qq保存的文件在哪里(qq保存的文件在电脑文件夹)

    qq保存的文件在哪里(qq保存的文件在电脑文件夹)

  • 红米k40怎么开小窗口(红米k40怎么开小窗口模式)

    红米k40怎么开小窗口(红米k40怎么开小窗口模式)

  • 建设银行强认证设备在哪里打开(建设银行强认证设备怎么解除)

    建设银行强认证设备在哪里打开(建设银行强认证设备怎么解除)

  • 苹果蓝牙耳机如何接电话(苹果蓝牙耳机如何看电量)

    苹果蓝牙耳机如何接电话(苹果蓝牙耳机如何看电量)

  • 快手流量券是什么意思(快手流量券是啥)

    快手流量券是什么意思(快手流量券是啥)

  • 怎么查找淘宝历史订单(怎么查找淘宝历史评价)

    怎么查找淘宝历史订单(怎么查找淘宝历史评价)

  • 国行苹果充电自动开机(iphone11国行充电自动开机)

    国行苹果充电自动开机(iphone11国行充电自动开机)

  • XS手机听筒扬声器一起响

    XS手机听筒扬声器一起响

  • 淘宝以前的订单怎么找不到了(怎么查淘宝以前的订单)

    淘宝以前的订单怎么找不到了(怎么查淘宝以前的订单)

  • 小米air2降噪怎么开(小米air2s降噪如何)

    小米air2降噪怎么开(小米air2s降噪如何)

  • 华为mate30单手模式怎么设置(mate30 单手操作)

    华为mate30单手模式怎么设置(mate30 单手操作)

  • 华为手机除了应用市场还可以用别的下载吗(华为手机除了应用市场还怎么下软件)

    华为手机除了应用市场还可以用别的下载吗(华为手机除了应用市场还怎么下软件)

  • 智慧团建密码怎么找回(智慧团建密码怎么老是不对)

    智慧团建密码怎么找回(智慧团建密码怎么老是不对)

  • 如何在淘宝上寄海外(在淘宝上怎么寄件)

    如何在淘宝上寄海外(在淘宝上怎么寄件)

  • vivo手机手电筒怎么开(vivo手机手电筒怎么快捷键打开)

    vivo手机手电筒怎么开(vivo手机手电筒怎么快捷键打开)

  • 一加7T Pro游戏模式怎么设置(一加7pro游戏模式在哪)

    一加7T Pro游戏模式怎么设置(一加7pro游戏模式在哪)

  • 苹果x怎么设置hdr(苹果x怎么设置home快捷键)

    苹果x怎么设置hdr(苹果x怎么设置home快捷键)

  • 演示文稿怎么制作(演示文稿怎么制作图片)

    演示文稿怎么制作(演示文稿怎么制作图片)

  • 荣耀9x支持18w快充吗(荣耀9x支持十八瓦快充吗)

    荣耀9x支持18w快充吗(荣耀9x支持十八瓦快充吗)

  • 苹果语音备忘录怎么重命名(苹果语音备忘录可以录多久)

    苹果语音备忘录怎么重命名(苹果语音备忘录可以录多久)

  • qq怎么邀请新人注册(qq怎么邀请新人进群聊)

    qq怎么邀请新人注册(qq怎么邀请新人进群聊)

  • wallpaper有手机版么(wallpaper有手机版吗贴吧)

    wallpaper有手机版么(wallpaper有手机版吗贴吧)

  • 淘宝买家怎么加入群聊(淘宝买家怎么加客服)

    淘宝买家怎么加入群聊(淘宝买家怎么加客服)

  • 欠条和收条,哪个效力大?(欠条和收条,哪个更真实)

    欠条和收条,哪个效力大?(欠条和收条,哪个更真实)

  • 个体工商户核定征收
  • 境外企业在中国境内承包建筑工程应在
  • 来料加工增值税率
  • 破产企业发放工资要不要纳税?
  • 交车辆购置税会计账务处理
  • 增值税留抵税额退税账务处理
  • 其他应付款贷方负数怎么调整
  • 企业账户被冻结可以去开其他账户吗
  • 企业没有进项发票又开出很多发票
  • 支付买方佣金
  • 作家以及作品
  • 外经证预缴税款之后剩下的税款交到哪呢
  • 银行承兑汇票向谁追索
  • 房屋及建筑物原值计算
  • 个人劳务费可以不开发票吗
  • 假设公司为增值税一般纳税人
  • 材料报废的会计处理(一般纳税人)
  • 母公司向子公司收取管理费
  • 盘亏固定资产会计处理
  • 固定资产出售是否属于日常关联交易
  • 购买增值税专用发票会判刑吗
  • 办公室租金可以计入办公费吗
  • 接受捐赠物品的增值税
  • 鸿蒙壁纸怎么设置滚动
  • 收回已冲销的应收账款分录
  • 单位外币账户
  • 临时设施是租入还是租入
  • 冲销多计提个税怎么做账
  • 历史时间线怎么写
  • dev beta 发布预览
  • 公司注册小规模有什么要求
  • php 函数返回值
  • 前端如何调用后端方法
  • php有面向对象吗
  • 中秋快乐图片大全
  • php下载远程文件到服务器
  • php的mysql_query
  • redis zset源码
  • 人工智能该如何规划软件工程师岗位
  • configure命令
  • 微信转账和支付宝转账的区别
  • 特惠贷贴息金额怎么算的
  • 税法上未投入使用的无形资产摊销所得税能扣除吗
  • sql中order by 1
  • 小企业销售收入分录
  • 建筑公司租赁设备怎么入账
  • 没有计提坏账如何做账
  • 发票红字怎么弄
  • 原材料 半成品
  • 车间杂工工资如何结算
  • 银行期初余额录少了怎么办
  • 营改增适用范围
  • 记账凭证附单据数怎么算
  • 年末本年利润没有结转影响报税吗
  • 企业给职工提供的免费住房是不是合法住宅?
  • 买断式买入
  • 预付调整到其他应付款
  • 商品流通企业会计做账流程
  • mysql输入中文显示乱码
  • bios识别不了硬盘怎么回事
  • window系统怎么取消开机密码
  • 老毛桃U盘启动盘工具安装Win8的详细图文教程
  • win8开机画面后黑屏
  • guardhp.exe是什么意思
  • 开机密码怎么删除
  • Linux查看内存的命令是
  • linux终端怎么用
  • 快捷方式栏在哪
  • android开发环境的搭建步骤
  • node爬取数据
  • node.js基础入门
  • django forms.py
  • javascript语言入门教程
  • Android eclipse for mac redo 快捷键
  • 苏州市总工会主要领导
  • 国家税务江苏税务总局官网
  • CA证书如何办理?
  • 国家税务总局江西省国家税务局
  • 印花税当期没有发生可以不用申报吗
  • 税务总局2016年70号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设