位置: 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问题

  • 怎么样利用QQ群 引流成千人大群(怎么样利用qq群赚钱)

    怎么样利用QQ群 引流成千人大群(怎么样利用qq群赚钱)

  • ipad mini6屏幕尺寸(ipadmini6屏幕尺寸长宽多少厘米)

    ipad mini6屏幕尺寸(ipadmini6屏幕尺寸长宽多少厘米)

  • 苹果13微信视频通话有美颜吗(苹果13微信视频聊天有美颜功能吗)

    苹果13微信视频通话有美颜吗(苹果13微信视频聊天有美颜功能吗)

  • 腾讯会议如何投票(腾讯会议如何投屏ppt)

    腾讯会议如何投票(腾讯会议如何投屏ppt)

  • 罗技g和罗技什么区别(罗技g与罗技logitech)

    罗技g和罗技什么区别(罗技g与罗技logitech)

  • 键盘属于输出设备还是输入设备(键盘属于输出还是输入)

    键盘属于输出设备还是输入设备(键盘属于输出还是输入)

  •   聊天记录可以找回吗(聊天记录可以伪造吗?)

      聊天记录可以找回吗(聊天记录可以伪造吗?)

  • qq从举报到冻结需要多久(qq举报成功冻结几天)

    qq从举报到冻结需要多久(qq举报成功冻结几天)

  • 苹果11打电话有回音(苹果11打电话有回音怎么回事)

    苹果11打电话有回音(苹果11打电话有回音怎么回事)

  • 抖音加入公会和不加入有什么区别(抖音加入公会和不加入收益有什么区别)

    抖音加入公会和不加入有什么区别(抖音加入公会和不加入收益有什么区别)

  • 监控回放卡顿怎么解决(监控回放总卡怎么回事)

    监控回放卡顿怎么解决(监控回放总卡怎么回事)

  • 小米9快充失效怎么修复(小米9快充失效了)

    小米9快充失效怎么修复(小米9快充失效了)

  • ps图层怎么显示出来(ps图层怎么显示图层内容)

    ps图层怎么显示出来(ps图层怎么显示图层内容)

  • 华为手机的悬浮球怎么关闭(华为手机的悬浮窗怎么关闭)

    华为手机的悬浮球怎么关闭(华为手机的悬浮窗怎么关闭)

  • 老人机设置9个亲情号码(老人机设置9个亲情号码视频教程)

    老人机设置9个亲情号码(老人机设置9个亲情号码视频教程)

  • 华为mate30清除后台程序(华为mate30pro清除数据还能找回手机吗)

    华为mate30清除后台程序(华为mate30pro清除数据还能找回手机吗)

  • 苹果x微信视频开启美颜(苹果x微信视频设置美颜)

    苹果x微信视频开启美颜(苹果x微信视频设置美颜)

  • 乘号在键盘上怎么打(乘号在键盘上怎么打快捷键)

    乘号在键盘上怎么打(乘号在键盘上怎么打快捷键)

  • PS怎么画虚线(ps怎么画虚线矩形)

    PS怎么画虚线(ps怎么画虚线矩形)

  • 虾米音乐mv下载方法(虾米音乐无损下载)

    虾米音乐mv下载方法(虾米音乐无损下载)

  • 陌陌能视频通话吗

    陌陌能视频通话吗

  • 尼康d3200功能键介绍(尼康d3100功能键)

    尼康d3200功能键介绍(尼康d3100功能键)

  • 怎么压缩文件夹发qq(手机怎么压缩文件夹)

    怎么压缩文件夹发qq(手机怎么压缩文件夹)

  • Linux统计行数方法及效率测试详解(linux统计代码总行数)

    Linux统计行数方法及效率测试详解(linux统计代码总行数)

  • 记账凭证红字冲销
  • 其他综合收益税后
  • 企业奖励的目的
  • 债务重组的会计处理方法
  • 其他应付款在现金流量表中应该填哪里
  • 营改增后常用发票报销的种类有哪些呢?
  • 暂估入库产品行程影响所得税汇算清缴吗
  • 小规模纳税人按月申报还是按季申报
  • 增值税专用发票使用规定 最新
  • 施工费增值税税率是9%
  • 油票需要填纳税信息吗
  • 小规模纳税人未达到起征点的增值税怎么做账
  • 增值税附加税怎么计提
  • 个人代开专票季未超30万附加税需要交吗
  • 企业收取的延期付款利息需要征消费税和增值税
  • 资金拆借利息收入是什么意思
  • 国企承接政府项目
  • 行政事业单位向企业借款违反了什么规定
  • 金税盘减免税款可以抵扣销项税吗
  • 上市公司发行债券股价会涨吗
  • 房地产企业按揭款到账后增值税
  • 招待客户住宿的句子
  • 作废的普通发票,顾客联拿不回来
  • 企业安全生产费用不得出现赤字
  • 吉野是哪里
  • php中数组的常用函数及用法
  • 对数前面有符号怎么计算
  • 进项抵销项的会计分录
  • 新成立的公司做广告如何写公司简介部分
  • etcd4
  • mysql常见操作
  • python 动态
  • 积分兑换业务有风险吗
  • 税务新增办税人员
  • 使用SQL server创建数据库和表
  • 公司注销了就可以不发工资么
  • mysql 指定my.cnf
  • 票种核定啥意思
  • 未开票收入应如何做分录
  • mysql导出用户和权限
  • sqlserver函数语法
  • 计提费用账务处理
  • 汇算清缴涉及的税种
  • 应收账款坏账计提比例新标准
  • 员工在工伤
  • 在贫困户入股分红大会上的讲话
  • 盈利能力分析对企业发展的意义
  • 公司成立前的费用发票可以入账吗
  • 开票需要缴纳印花税吗
  • 盘亏和报废报损的区别
  • 公司与公司之间的函怎么写
  • 买断式买入
  • 总分类账户与明细分类账户的关系
  • mssql insert into 和insert into select性能比较
  • rsyslog 8.11.0 (v8-stable) 发布
  • 比较常见的成语有哪些
  • kcleaner.exe是什么
  • explorer.exe进程被结束怎么恢复
  • linux shell脚本实例
  • 关于linux操作系统的描述中
  • 做网页需要域名吗
  • tf-idf例题
  • cocos2dx quick lua 学习笔记1
  • python内置函数用来打开或创建文件并返回文件对象
  • python 开源框架
  • linux命令提示符
  • nodejs bff
  • javascript的对象有哪些
  • python pil gif
  • javascript如何学
  • jqueryfilter
  • 微软python视频教程
  • 税务大厅买票需要什么东西
  • 个人取得抽奖,购车抵用,需要缴纳个人所得税吗
  • 代扣代缴申报表 填表说明
  • 怎样在网上打印社保证明
  • 如何理解财税一体化
  • 网上报税失败怎么办
  • 九江五室新楼盘
  • 国家税务总局网站官网贵州省税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设