位置: IT常识 - 正文

前端部署发布项目后,如何通知用户刷新页面、清除缓存(前端部署发布项目有哪些)

编辑:rootadmin
前端部署发布项目后,如何通知用户刷新页面、清除缓存

推荐整理分享前端部署发布项目后,如何通知用户刷新页面、清除缓存(前端部署发布项目有哪些),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端项目如何部署到服务器,前端项目部署与发布,前端项目部署与发布,前端部署发布项目是什么,前端 部署,前端部署发布项目怎么做,前端项目部署与发布,前端部署发布项目怎么做,内容如对您有帮助,希望把文章链接给更多的朋友!

以下只是一些思路,有更好的实现方式可以留言一起交流学习

方式一:纯前端 在每次发布前端时,使用webpack构建命令生成一个json文件,json中写个随机生成的一个字符串(比如时间戳),每次打包程序都会自动更新这个json文件。 在项目中,通过定时任务或者在切换页面路由时,请求json文件。使用本地保存的上一次生成的字符串和json文件中的字符串进行比较,如果两个字符串不一样,则说明前端重新部署了,提醒用户进行更新或进行强制刷新的操作。

方式二:前后端配合 在每个请求的header里面加上发版版本号,和保留在客户端的上一次版本号进行比较,如果不一致则强制刷新,刷新后保存当前版本号。(或者单独写一个返回版本号的接口)

下面重点说一下纯前端如何做:

①webpack构建 生成一个json文件,在项目目录下新建plugin文件夹,新建version-webpack-plugin.js如下

/** 自定义的插件: 生成版本号json文件 */const fs = require("fs");class VersionPlugin { apply(compiler) { // emit 是异步 hook,使用 tapAsync 触及它,还可以使用 tapPromise/tap(同步) compiler.hooks.emit.tap("Version Plugin", (compilation) => { const outputPath = compiler.path || compilation.options.output.path; const versionFile = outputPath + "/version.json"; const timestamp = Date.now(); // 时间戳作为版本号 const content = `{"version": "${timestamp}"}`; /** 如果路径存在则返回 true,否则返回 false。 */ if (!fs.existsSync(outputPath)) { // 同步地创建目录。 返回 undefined 或创建的第一个目录路径(如果 recursive 为 true)。 这是 fs.mkdir() 的同步版本。 fs.mkdirSync(outputPath, { recursive: true }); } // 生成json文件 fs.writeFileSync(versionFile, content, { encoding: "utf8", flag: "w", }); }); }}module.exports = { VersionPlugin };

②在vue.config.js中使用者个 plugin

前端部署发布项目后,如何通知用户刷新页面、清除缓存(前端部署发布项目有哪些)

const { VersionPlugin } = require('./plugin/version-webpack-plugin.js');

③在每次执行webpack构建命令,都会在dist目录下生成一个version.json文件,里面有一个字段叫 version,值是构建时的时间戳,每次构建都会生成一个新的时间戳。

④发起ajax请求,请求version.json文件获取version时间戳,和本地保存的上一次的时间戳做比较,如果不一样,则进行对应的操作。

import axios from 'axios'import {MessageBox} from 'element-ui'export function reloadVersion() { axios.get(window.location.origin + '/plm/version.json?v=' + Date.now()).then(rsp => { let localVersion = localStorage.getItem('localVersion') let onlineVersion = rsp.data.version if(onlineVersion){ if(localVersion!==onlineVersion){ // 弹框提示更新 MessageBox.confirm('有版本更新,是否刷新确保获取最新数据?', '版本更新', { confirmButtonText: '更新', cancelButtonText: '取消', type: 'warning' }).then(() => { // 发版版本号和本地版本号不一致,保存最新的版本号到本地,并刷新页面获取最新的页面 localStorage.setItem('localVersion',onlineVersion) window.location.reload(); }) } } })}

⑤请求发起的时机,可以使用定时器或者在切换页面的时候进行校验版本。根据自己的实际情况选择合适的调用时机。 

(二)通过监听网页端的报错,进行相应的处理。

如果是覆盖式的更新,有可能发版前就已经删除了上一个版本的dist文件,会造成缓存的页面依然调用已经被删除的文件,所以会白屏报错。报错就有可能不会执行到上面发起请求获取版本号的操作。所以如果监听到如下的几种报错,可以进行刷新页面的操作,

在index.html根目录文件中加入如下代码。为了防止页面一直刷新,所以加了一个超过次数就不再继续刷新的逻辑

<script> // 错误监听 window.addEventListener('error', (e) => { console.log('globalError'+e) // 类似manifest.js和app.js等静态资源报错 if(e.target.outerHTML.indexOf('js/manifest.') != -1 || e.target.outerHTML.indexOf('js/app.') != -1|| e.target.outerHTML.indexOf('js/chunk-') != -1){ var errorTime = sessionStorage.getItem('mainAppErrorTime') if(errorTime&&errorTime>0){ errorTime++ } else{ errorTime = 1 } var timer = setTimeout(function() { // 错误次数存在缓存,刷新超过3次不会继续刷新。退出页面重进后,次数重置 sessionStorage.setItem('mainAppErrorTime', errorTime) window.location.reload() }, 1000); if(errorTime&&errorTime>=3){ clearTimeout(timer) // 清空定时器 } } }, true); </script>
本文链接地址:https://www.jiuchutong.com/zhishi/297304.html 转载请保留说明!

上一篇:如何使用ssh密钥的方式实现无密码scp传输文件(ssh怎么带密码)

下一篇:vue-nginx刷新404问题

  • 微博视频号怎么开(微博视频号怎么去除水印)

    微博视频号怎么开(微博视频号怎么去除水印)

  • 苹果手机怎么解决相机模糊(苹果手机怎么解绑银行卡)

    苹果手机怎么解决相机模糊(苹果手机怎么解绑银行卡)

  • 怎么关闭支付宝刷脸(怎么关闭支付宝刷脸支付功能)

    怎么关闭支付宝刷脸(怎么关闭支付宝刷脸支付功能)

  • 平板电脑属于什么分类(平板电脑属于什么计算机)

    平板电脑属于什么分类(平板电脑属于什么计算机)

  • 快手经常搜索一个人他知道吗(快手经常搜索一个人)

    快手经常搜索一个人他知道吗(快手经常搜索一个人)

  • 单元格底纹颜色怎么设置(单元格底纹颜色怎么设置25%)

    单元格底纹颜色怎么设置(单元格底纹颜色怎么设置25%)

  • 微信怎么自动点赞(打开微信)

    微信怎么自动点赞(打开微信)

  • 一加六手机长度几厘米(一加六手机长度是多少)

    一加六手机长度几厘米(一加六手机长度是多少)

  • 苹果手机屏幕是哪个厂家的(苹果手机屏幕是三星的吗)

    苹果手机屏幕是哪个厂家的(苹果手机屏幕是三星的吗)

  • 电脑开机后黑屏显示英文(电脑开机后黑屏进入不了桌面怎么解决)

    电脑开机后黑屏显示英文(电脑开机后黑屏进入不了桌面怎么解决)

  • iphone上滑控制中心(苹果上滑控制)

    iphone上滑控制中心(苹果上滑控制)

  • 苹果手机蓝牙打不开是怎么回事(苹果手机蓝牙打不开了怎么修复)

    苹果手机蓝牙打不开是怎么回事(苹果手机蓝牙打不开了怎么修复)

  • 苹果6plus16g内存不够用怎么办(16g苹果6p手机内存不足怎么办)

    苹果6plus16g内存不够用怎么办(16g苹果6p手机内存不足怎么办)

  • 小米8移动4g 是什么意思(小米八是四g还是五g)

    小米8移动4g 是什么意思(小米八是四g还是五g)

  • iphonexr设备管理信任在哪(设备管理在哪里找苹果xr)

    iphonexr设备管理信任在哪(设备管理在哪里找苹果xr)

  • 怎么让手机屏幕一直亮着(怎么让手机屏幕变得顺滑)

    怎么让手机屏幕一直亮着(怎么让手机屏幕变得顺滑)

  • 快手找回删除作品诀窍(快手找回删除作品)

    快手找回删除作品诀窍(快手找回删除作品)

  • 小米m1803e6e是什么型号(小米m180e4a是什么型号)

    小米m1803e6e是什么型号(小米m180e4a是什么型号)

  • 陌陌拉黑和删除的区别(陌陌拉黑和删除哪个更绝情)

    陌陌拉黑和删除的区别(陌陌拉黑和删除哪个更绝情)

  • 华为share功能是什么(华为share是干嘛的)

    华为share功能是什么(华为share是干嘛的)

  • 美图秀秀怎么截图(美图秀秀怎么截取视频的一部分)

    美图秀秀怎么截图(美图秀秀怎么截取视频的一部分)

  • 荣耀v20有40w快充吗(荣耀v20支持40w快充)

    荣耀v20有40w快充吗(荣耀v20支持40w快充)

  • word2010护眼模式怎么设置(word2010护眼模式怎么打开)

    word2010护眼模式怎么设置(word2010护眼模式怎么打开)

  • 打电话显示呼叫失败(打电话显示呼叫受限,请勿越前使用是不是机主被抓了)

    打电话显示呼叫失败(打电话显示呼叫受限,请勿越前使用是不是机主被抓了)

  • WebSocket开发(心跳监测)功能(websocket())

    WebSocket开发(心跳监测)功能(websocket())

  • 企业支付的租金在汇算时可一次性税前扣除
  • 小规模纳税人企业所得税2023
  • 金税盘系统维护注册码
  • 汇算清缴时发现去年的成本少确认了报表怎么填列
  • 服务费的增值税怎么算
  • 金税四期的主要功能
  • 普通发票可以换增值税发票吗
  • 银行贷款第三方收款人
  • 减免企业所得税怎么算
  • 资本化利息支出在哪个科目
  • 主营业务收入和销售收入
  • 公司给员工购买意外险怎么做账
  • 新会计准则中计提减值如何回转
  • 绿化工程账务处理支出
  • 债权如何变现
  • 收款收据写着投诉有效吗
  • 事业单位现金收支管理办法
  • 收财务拨款的贷款合法吗
  • 企业所得税减免税额包括哪些
  • 小规模纳税人物流服务税率
  • 在纳税申报时如何填写申报表?
  • 政府土地出让金返还
  • 外地餐费计入什么账户
  • 为什么预计负债是递延所得税资产
  • 产品质量认证的基本条件有哪些
  • 电子发票怎么开具流程
  • 坏账准备确认后可以转回吗
  • 增值税留抵退税账务处理
  • 企业的团队建设之荒野求生
  • 住宿费和差旅费
  • php实现的跟QQ和MSN类似的BICQ v2.0.0
  • 安卓车机系统开发
  • 增值税专用发票抵扣期限
  • 企业税务罚款标准
  • loadprofiles什么意思
  • 硬盘最小的存储单位
  • 勾选确认发票后能撤销吗
  • vue2计算属性和vue3的计算属性的区别
  • 浅谈一下新冠的好处
  • 购进来的样品怎么账务处理
  • 织梦数据库在哪
  • 固定资产记到什么账本
  • 现金劳务收入会计分录
  • 给第三方的销售怎么做
  • db2数据库备份文件为bkd格式
  • 增值税专用发票和普通发票的区别
  • 企业金融资产包括银行存款吗
  • 附加税费怎么计算
  • 工程服务费会计怎么做账
  • 租赁中承租人的会计分录
  • 存货跌价准备确认
  • 哪些原始凭证要盖章
  • 政府扶助资金
  • 赠送样品视同销售增值税该怎么做账务处理呢?
  • 其他应付款属于哪类
  • 超市购物卡怎么办理
  • sqlserver的分页语句
  • mysql视图语句
  • linux系统的电脑如何共享
  • centos7.4修改主机名
  • solaris版本查询
  • win10升级后无法进入系统一直重启
  • win8.1内存占用过高
  • win7文件夹选项在哪里打开
  • win8windows设置在哪里
  • JavaScript实现Base64编码转换
  • 简述javascript执行原理
  • jQuery ajaxForm()的应用
  • 安卓竖屏改横屏
  • js实现兼容性较好的方法
  • javascript编程语言
  • jquery search
  • eclipse怎么写python程序
  • python中的zip()函数详解
  • python中url
  • javascript获取html元素的方法
  • 彩票税率税率
  • 深圳国税电子税务局网上办税服务厅
  • 工程开具增值税专用发票
  • 重庆国税电子税务局手机版
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设