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

  • 苹果id名可以修改吗(苹果id的名字能改吗)

    苹果id名可以修改吗(苹果id的名字能改吗)

  • 在拼多多买东西怎么不让好友知道(在拼多多买东西怎样投诉店铺)

    在拼多多买东西怎么不让好友知道(在拼多多买东西怎样投诉店铺)

  • 手机红外头怎么开启(手机红外头怎么焊接)

    手机红外头怎么开启(手机红外头怎么焊接)

  • 手机号码过期怎么恢复(手机号码过期怎么恢复正常)

    手机号码过期怎么恢复(手机号码过期怎么恢复正常)

  • 华为商城买的手机可以退货吗(华为商城买的手机贴膜了吗)

    华为商城买的手机可以退货吗(华为商城买的手机贴膜了吗)

  • qq备注是什么意思(qq中的备注是什么意思)

    qq备注是什么意思(qq中的备注是什么意思)

  • 一个华为账号可以登录几个手机(一个华为账号可以绑定几个手机)

    一个华为账号可以登录几个手机(一个华为账号可以绑定几个手机)

  • 韩剧tv投屏点了没反应(韩剧tv投屏投不上怎么办)

    韩剧tv投屏点了没反应(韩剧tv投屏投不上怎么办)

  • 为什么库乐队没有共享(为什么库乐队没有30秒一天显示)

    为什么库乐队没有共享(为什么库乐队没有30秒一天显示)

  • 苹果volte是什么意思(iphone的volte有什么用)

    苹果volte是什么意思(iphone的volte有什么用)

  • 网易云音乐我的喜欢在哪里(网易云音乐我的歌手榜在哪)

    网易云音乐我的喜欢在哪里(网易云音乐我的歌手榜在哪)

  • 电信路由器密码是多少(电信路由器密码一般是多少)

    电信路由器密码是多少(电信路由器密码一般是多少)

  • 文本替换功能的选项卡(文本替换功能的快捷键)

    文本替换功能的选项卡(文本替换功能的快捷键)

  • 微型计算机一般按什么进行分类(微型计算机一般采用( )来描述运算速度(1.0))

    微型计算机一般按什么进行分类(微型计算机一般采用( )来描述运算速度(1.0))

  • 一加7Tpro是什么处理器(一加7tpro百度百科)

    一加7Tpro是什么处理器(一加7tpro百度百科)

  • 拼多多怎么申请开店(拼多多怎么申请开发票)

    拼多多怎么申请开店(拼多多怎么申请开发票)

  • iphone11有夜拍模式吗(iphone11夜拍模式)

    iphone11有夜拍模式吗(iphone11夜拍模式)

  • 照片换背景(照片换背景快捷指令)

    照片换背景(照片换背景快捷指令)

  • oppo电话本怎么导入苹果手机(OPPO电话本怎么备份)

    oppo电话本怎么导入苹果手机(OPPO电话本怎么备份)

  • 快手怎么切换视频(快手怎么切换视频看法)

    快手怎么切换视频(快手怎么切换视频看法)

  • 省流量模式在哪里关闭(省流量模式在哪里开)

    省流量模式在哪里关闭(省流量模式在哪里开)

  • 如何删除手机新闻资讯(如何删除手机新闻动态)

    如何删除手机新闻资讯(如何删除手机新闻动态)

  • jmmaloo华为什么型号(华为jmmal00)

    jmmaloo华为什么型号(华为jmmal00)

  • 电脑开wifi给手机用的方法是什么?(电脑开wifi给手机用好吗)

    电脑开wifi给手机用的方法是什么?(电脑开wifi给手机用好吗)

  • 〖大前端 - 基础入门三大核心之CSS篇⑳〗- 2D变形(大前端需要掌握什么技能)

    〖大前端 - 基础入门三大核心之CSS篇⑳〗- 2D变形(大前端需要掌握什么技能)

  • 递延所得税费用在资产负债表哪一项
  • 补报以前年度收入后当年所得税怎么处理
  • 制造费用的结转公式
  • 经营者个人所得税申报
  • 小规模企业免征增值税如何做账
  • 单据核销不了
  • 哪些税种计税价格是含增值税
  • 车辆报废补贴多久到账
  • 事业单位存货盘亏会计分录
  • 外贸过程中产生的问题
  • 利息股息红利所得个人所得税怎么算
  • 汽车修理厂如何做账
  • 企业所得税预缴可以不交吗
  • 公司投资另一家公司怎么做科目
  • 6%的增值税发票能抵扣13%的吗
  • 企业所得税申报表在哪里打印
  • 制造费用月末需要结转吗
  • 固定资产 盘点
  • 企业社会贡献总结怎么写
  • 结转利润分配分录怎么写
  • 上月暂估入账的原材料的发票已经送到财务部
  • 王者荣耀如何更改战区
  • 多交增值税可以退吗
  • 下花园6路公交车时间表
  • 房地产开发企业增值税怎么算
  • 清卡处于非征期是什么意思
  • qtaet2s.exe - qtaet2s是什么进程 有什么用
  • 抵债资产会计核算
  • 借别人资质投标如何签合同
  • 如何设置谷歌浏览器语言为中文
  • win7怎么添加设备
  • linux的ps命令用法
  • PHP:ereg_replace()的用法_Regex正则函数
  • Win10 Build 19044.1379/19043.1379更新补丁KB5007253预览版推送
  • 发放职工工资计入什么会计科目
  • phpipam使用
  • 借方为什么是减少额?
  • 国际税收协定有哪些主要内容
  • vue组件引入外部js
  • 土地转让注意事项有哪些
  • 长期待摊费用账务
  • python send_from_directory
  • python子类init
  • 房地产开发企业土地出让金扣除政策
  • 发票金额 含税
  • sql 列转行
  • 税控盘有什么作用
  • 购买设备分期付款凭证怎么做
  • 银行汇票的分类和适用范围
  • 其他收益和其他综合收益区别
  • 预付在建工程款的会计分录
  • 机器设备一般折旧几年
  • 年金现值系数和复利现值系数的公式
  • 食品发票可以报销吗怎么报销
  • 税控系统技术维护费的申报抵扣方法
  • 转回小规模
  • 期末结账后没有余额的科目
  • 在计划管理中根据事实思考这一步的内容是
  • 天猫佣金是什么意思
  • 从农民手里租用土地用于科研要开发票吗
  • mysql使用入门
  • MySQL5.7 windows二进制安装教程
  • sqlserver判断数据库是否存在
  • xp系统网络服务在哪开启
  • freebsd使用手册
  • 详细介绍的英文
  • win10系统如何快速打开控制面板
  • 不知道,不知道
  • window8系统ie浏览器在哪里
  • windows10 rs4
  • linux应用程序在哪个目录
  • cocos2d原理
  • 自动断开网络共享怎么办
  • jQuery+Ajax实现无刷新操作
  • yarn功能
  • 谷歌邮箱
  • 国家税务总局公告2022年第9号
  • 江苏省国家税务局
  • 卷烟批发环节的消费税一箱150元
  • 什么是减税政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设