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

  • 网易云音乐关屏幕停止(网易云音乐关屏后过一会就没网了)

    网易云音乐关屏幕停止(网易云音乐关屏后过一会就没网了)

  • 电脑版芒果tv怎么下载视频(电脑版芒果TV怎么开倍速)

    电脑版芒果tv怎么下载视频(电脑版芒果TV怎么开倍速)

  • 三星手机显示无命令怎么解决(三星手机显示无法连接服务器)

    三星手机显示无命令怎么解决(三星手机显示无法连接服务器)

  • word怎么把多余的空白页删掉(word怎么把多余的一行并到同一页)

    word怎么把多余的空白页删掉(word怎么把多余的一行并到同一页)

  • 荣耀v30支持指关节截屏吗(荣耀v30指关节截屏怎么开启)

    荣耀v30支持指关节截屏吗(荣耀v30指关节截屏怎么开启)

  • 苹果se是不是5g手机(iphone se是不是5g)

    苹果se是不是5g手机(iphone se是不是5g)

  • 冯诺计算机基本原理是(计算机理论基础的冯诺依曼原理和思想是什么概念)

    冯诺计算机基本原理是(计算机理论基础的冯诺依曼原理和思想是什么概念)

  • 微博屏蔽消息对方知道吗(微博屏蔽消息对方还能发私信吗)

    微博屏蔽消息对方知道吗(微博屏蔽消息对方还能发私信吗)

  • 微信身体传感器要开吗(微信身体传感器权限怎么开?)

    微信身体传感器要开吗(微信身体传感器权限怎么开?)

  • 微信限制登录最长多久(微信限制登录最新消息)

    微信限制登录最长多久(微信限制登录最新消息)

  • iqoo3屏幕刷新率多少(iQOO3屏幕刷新率)

    iqoo3屏幕刷新率多少(iQOO3屏幕刷新率)

  • 华为nova3i支持无线充电(华为nova3i带无线充电吗)

    华为nova3i支持无线充电(华为nova3i带无线充电吗)

  • 隐藏列如何显示出来(隐藏列在哪里)

    隐藏列如何显示出来(隐藏列在哪里)

  • 爱奇艺怎么看不了完整电视剧了(爱奇艺怎么看不了离线视频)

    爱奇艺怎么看不了完整电视剧了(爱奇艺怎么看不了离线视频)

  • cpu70度会把cpu烧坏吗(cpu多少度会烧毁)

    cpu70度会把cpu烧坏吗(cpu多少度会烧毁)

  • 手机运行2g是什么意思(手机运行2g和4g有什么区别)

    手机运行2g是什么意思(手机运行2g和4g有什么区别)

  • 小米9pro怎么添加黑名单(小米9pro5g怎么设置)

    小米9pro怎么添加黑名单(小米9pro5g怎么设置)

  • 苹果x暗黑模式怎么设置(苹果x暗黑模式怎么关)

    苹果x暗黑模式怎么设置(苹果x暗黑模式怎么关)

  • 水印相机怎么拍是原图(水印相机怎么拍视频带时间)

    水印相机怎么拍是原图(水印相机怎么拍视频带时间)

  • iphone11max啥时候上市(2021年苹果11promax什么时候降价)

    iphone11max啥时候上市(2021年苹果11promax什么时候降价)

  • ipadair2019电池容量(ipadair2020电池容量)

    ipadair2019电池容量(ipadair2020电池容量)

  • etc激活后多久可以用(etc激活成功了马上就可以用吗)

    etc激活后多久可以用(etc激活成功了马上就可以用吗)

  • spf13-vim – Vim编辑器终极发布

    spf13-vim – Vim编辑器终极发布

  • 王者荣耀电脑版百里守约怎么操作?(王者荣耀电脑版怎么键盘操作)

    王者荣耀电脑版百里守约怎么操作?(王者荣耀电脑版怎么键盘操作)

  • 什么是跨域以及为什么会出现跨域以及跨域的解决方案(什么是跨域以及跨境电商)

    什么是跨域以及为什么会出现跨域以及跨域的解决方案(什么是跨域以及跨境电商)

  • 公司给个体户转账怎么交税
  • 非流动资产处置损失包括哪些
  • 公积金需要每月缴纳吗
  • 企业报税盘入账应该记入哪个科目?
  • 重复做了以前做过的梦
  • 软件开发公司怎么找客户
  • 税法关于劳务费用的规定
  • 纳税人签字
  • 联营扣点怎么核算保本费用
  • 用友t3建新账
  • 一般纳税人必须要交几个人社保
  • 加盟费收入如何入账
  • 什么叫管理口径报表
  • win10玩游戏时弹出error
  • 存出保证金的核算内容
  • 公司购买的财产保险服务可以抵扣进项吗
  • 事业单位研究开题报告
  • mac截图如何保存到照片
  • rtx3090 rtx titan
  • 本年利润有余额可以结账吗
  • 经营租入的设备能够确认为资产吗
  • 资产减值损失在贷方表示什么意思
  • 企业合并收购,对员工的机会和挑战
  • 应付票据到期怎么处理
  • PHP:pg_close()的用法_PostgreSQL函数
  • 临时用工怎样做账
  • 上月发票这月冲红,对这月有影响吗
  • 财务费用为什么增加
  • 发放应付职工薪酬是借方还是贷方
  • 代理业务怎么记账
  • 往来款项账务处理
  • element-ui表格
  • 前端和后端到底是什么
  • 优胜美地国家公园简介
  • cifar10图像分类实验报告
  • 计算机视觉算法
  • 英雄联盟轮转模式2020时间表
  • PHP中set_include_path()函数相关用法分析
  • 小微企业所得税优惠政策2023
  • 折旧提取后资金如何处理
  • 返还教育费附加、地方教育费附加代征手续费的请示
  • MySQL中UPDATE与DELETE语句的使用教程
  • 印花税申报的流程有哪些
  • 交易性金融资产公允价值变动计入
  • 房产税中出租房产原值怎么算
  • 权责发生制是根据发票入账吗
  • 下列项目的进项税额可以从销项税额中抵扣的是()
  • 小规模企业没有员工如何申报个税
  • 材料的采购成本构成
  • 个体工商户核定征收超额怎么缴税
  • 发票拍照打印出来可以报销吗法律
  • 发票一直没验旧会有什么影响
  • 投资者向企业投入资本的形式
  • 购买花卉
  • 无形资产如何计提减值
  • 税金附加科目有哪些
  • 企业进项构成比例
  • 机票行程单如何看座位等级
  • 应付职工薪酬包括辞退福利吗
  • 网上购物退货后钱多久到
  • 福利部门的福利有哪些
  • 付给外包公司的垃圾处理费会计分录
  • 成本结转的方法实例
  • win10自动
  • ecap.exe是什么
  • win8更新8.1
  • ubuntu系统安装报错
  • win8n
  • linux filezilla使用教程
  • nodejs stdin
  • 如何解决android代码红线
  • css 网页布局
  • node.js和go
  • wordpress单页面店铺
  • 美国进口税起征点
  • 四川省税务局官方网站申报窗口
  • 浙江国税局电子税务局
  • 个税扣款怎么查询
  • 企业间借款合同印花税怎么交
  • 退回多扣的个人所得税会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设