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

  • 360浏览器缓存怎么清除(360浏览器缓存怎么看)

    360浏览器缓存怎么清除(360浏览器缓存怎么看)

  • 苹果8p怎么设置隐私锁(苹果8p怎么设置手写输入法)

    苹果8p怎么设置隐私锁(苹果8p怎么设置手写输入法)

  • 苹果手机上半部分发烫(苹果手机上半部分发烫什么原因)

    苹果手机上半部分发烫(苹果手机上半部分发烫什么原因)

  • oppo属于哪个集团(oppo哪个集团)

    oppo属于哪个集团(oppo哪个集团)

  • 苹果11打电话黑屏后不亮(苹果11打电话黑屏怎么回事)

    苹果11打电话黑屏后不亮(苹果11打电话黑屏怎么回事)

  • 怎么看p40pro屏幕(怎么看p40pro屏幕供应商)

    怎么看p40pro屏幕(怎么看p40pro屏幕供应商)

  • 美团审核要多久(美团审核要多久才能开店)

    美团审核要多久(美团审核要多久才能开店)

  • 系统光盘装在电脑里面不启动是怎么回事(系统光盘放入电脑怎么启动不了)

    系统光盘装在电脑里面不启动是怎么回事(系统光盘放入电脑怎么启动不了)

  • 显示器可以连接手机吗(显示器可以连接显示器吗)

    显示器可以连接手机吗(显示器可以连接显示器吗)

  • 华为手机怎么卸载桌面软件(华为手机怎么卸载手机管家)

    华为手机怎么卸载桌面软件(华为手机怎么卸载手机管家)

  • 怎么在快手主页显示电话(怎么在快手主页显示自己的店铺)

    怎么在快手主页显示电话(怎么在快手主页显示自己的店铺)

  • 怎么用蓝牙传视频(怎么用蓝牙传视频给另一部手机)

    怎么用蓝牙传视频(怎么用蓝牙传视频给另一部手机)

  • b站音频怎么下载到手机(b站音频怎么下载)

    b站音频怎么下载到手机(b站音频怎么下载)

  • 淘宝关注过的主播在哪找(淘宝关注的主页在哪找)

    淘宝关注过的主播在哪找(淘宝关注的主页在哪找)

  • 华为充电接口类型(华为充电接口是)

    华为充电接口类型(华为充电接口是)

  • 红米手机屏幕分辨率怎么调(红米手机屏幕分辨率在哪)

    红米手机屏幕分辨率怎么调(红米手机屏幕分辨率在哪)

  • 苹果max怎么录屏幕视频(苹果max怎么录屏教程)

    苹果max怎么录屏幕视频(苹果max怎么录屏教程)

  • ipad2什么时候上市的(ipad2啥时候出的)

    ipad2什么时候上市的(ipad2啥时候出的)

  • 如何重装键盘驱动(如何重装键盘驱动器)

    如何重装键盘驱动(如何重装键盘驱动器)

  • 爱奇艺显示网络不给力(爱奇艺显示网络未连接,检查网络设置怎办呢)

    爱奇艺显示网络不给力(爱奇艺显示网络未连接,检查网络设置怎办呢)

  • dell电脑一键u盘装系统安装win10教程(戴尔电脑设置u盘)

    dell电脑一键u盘装系统安装win10教程(戴尔电脑设置u盘)

  • 小程序自定义tabbar导航栏、动态控制tabbar功能实现(uniapp)(小程序自定义tabbar创意动画)

    小程序自定义tabbar导航栏、动态控制tabbar功能实现(uniapp)(小程序自定义tabbar创意动画)

  • 解决CentOS 安装出现

    解决CentOS 安装出现"-bash: wget: 未找到命令"解决方案(centos安装软件教程)

  • 新手为什么选择织梦CMS(dedecms)程序建设网站?(新手为什么要买二手车)

    新手为什么选择织梦CMS(dedecms)程序建设网站?(新手为什么要买二手车)

  • 消费税和所得税的关系
  • 境外旅客购物离境退税条件
  • 缴纳增值税会计处理
  • 增值税多提了怎么处理
  • 出租车发票上没有二维码
  • 外资企业是否属于公有制经济
  • 其他债权投资发生减值的账务处理
  • 增值税一般纳税人是什么意思
  • 劳保费用可以开专票吗
  • 已认证的发票没领怎么办
  • 小规模企业申请破产流程
  • 汇算清缴应纳税所得额5万要交多少税
  • 地方教育费附加减免政策
  • 最新房产税费
  • 在会计上跨季度增值税专用发票怎么进行红冲?
  • 国有土地租金怎么交税
  • 公司帐上欠了股东很多钱有何税务风险?
  • 税盘减免会计分录
  • 一般纳税人进项税会计分录
  • 小规模纳税人销售自己使用过的物品
  • 往来账会计怎么做
  • 设备安装服务几个点
  • 工程机械租赁公司图片
  • 收到政府补贴的装修款
  • mac屏幕横过来了
  • linux cls命令
  • php sybase_fetch_array使用方法
  • 土地增值税的意思
  • 溢缴退费是什么意思
  • 非金融机构从事贷款谁负责监管
  • 客户端调用axis1.4的方式
  • yolov5m
  • 研发的无形资产
  • javascript数据类型分为哪两类
  • 二手车交易发票怎么收费
  • 利息收入的会计科目怎么做
  • 公司有一个残疾人
  • 增值税不动产扣除项目
  • 汽车进项税什么时候抵扣
  • 商业汇票的承兑银行必须具备下列条件
  • 月末损益结转手工结转步骤
  • 收到退回的企业所得税,资产负债表如何填
  • 航天信息服务费280元会计处理
  • 年金终值系数表值系数
  • 评估费用由谁承担
  • 增值税延期滞纳金计算
  • mysql 随机
  • 进项税额已经抵扣是什么意思
  • 个人所得额哪些要交税
  • 事业单位是怎样向上申请招人的
  • 2021年村级财务管理要点
  • 顺流交易为什么也要减
  • 机票会计代理如何做
  • 政府补贴专项资金补贴开发票
  • 公户转私户的钱会退回吗
  • 发生坏账时的分录
  • 包工包料怎么开13个点发票
  • 电子发票开具流程?
  • 一般纳税人混凝土税负率
  • 私人银行卡给公司走账有影响吗
  • 伤病假条
  • sql里面时间函数格式
  • linux搭建socks代理
  • 海尔笔记本最新款
  • ubuntu 编译软件
  • windows 8.1将“计算机”(This PC)更名为“此电脑”
  • win7 64位系统重装后无线信号找不到的原因分析以及解决方法
  • windows7 远程连接
  • python到底怎么学
  • unity3d制作ui
  • 抽象类和接口的区别简答题
  • jquery对象可以直接使用dom吗
  • js实现返回顶部
  • javascript怎么弄
  • python迭代器iter
  • jquery跨域请求有哪些方式
  • 高铁票抵扣进项能抵扣吗
  • 美国企业所得税税率2022
  • 核定征收一般纳税人
  • 税务总局2016年70号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设