位置: 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群课堂怎么开视频聊天)

  • 支付宝积分兑换在哪里

    支付宝积分兑换在哪里

  • hdaudio是什么接口(hdaudio是什么接口有用吗)

    hdaudio是什么接口(hdaudio是什么接口有用吗)

  • 支付宝火车票机票打不开(支付宝火车票机票小程序)

    支付宝火车票机票打不开(支付宝火车票机票小程序)

  • 计算机什么系统包括计算机的所有电子(计算机什么系统和什么系统统称为计算机系统)

    计算机什么系统包括计算机的所有电子(计算机什么系统和什么系统统称为计算机系统)

  • 小米9电信卡打不了电话(小米电信卡打不了电话)

    小米9电信卡打不了电话(小米电信卡打不了电话)

  • 蓝牙耳机对哪里说话(蓝牙耳机对哪里有要求)

    蓝牙耳机对哪里说话(蓝牙耳机对哪里有要求)

  • 抖音直播最少几个小时(抖音直播最少几个人)

    抖音直播最少几个小时(抖音直播最少几个人)

  • win7硬盘格式要求mbr还是gpt(won7硬盘格式)

    win7硬盘格式要求mbr还是gpt(won7硬盘格式)

  • 华为ltn-b19是什么型号(华为lth b19)

    华为ltn-b19是什么型号(华为lth b19)

  • 发出的朋友圈能不能重新编辑(发出的朋友圈能编辑吗)

    发出的朋友圈能不能重新编辑(发出的朋友圈能编辑吗)

  • iqoopro5g是双模吗(iqoopro5g手机是双模5g吗)

    iqoopro5g是双模吗(iqoopro5g手机是双模5g吗)

  • 输出为pdf是什么意思(输出pdf在哪里找)

    输出为pdf是什么意思(输出pdf在哪里找)

  • 手机下载的视频在哪个文件(手机下载的视频怎么保存到相册)

    手机下载的视频在哪个文件(手机下载的视频怎么保存到相册)

  • 电脑小米同步是什么意思(小米笔记本的小米同步怎么打不开)

    电脑小米同步是什么意思(小米笔记本的小米同步怎么打不开)

  • 抖音撤回的消息有留底吗(抖音撤回的消息怎么恢复)

    抖音撤回的消息有留底吗(抖音撤回的消息怎么恢复)

  • wps怎么检索关键字(wps office检索关键字)

    wps怎么检索关键字(wps office检索关键字)

  • bm46电池适用什么手机(bm44电池多少钱一块)

    bm46电池适用什么手机(bm44电池多少钱一块)

  • 微信运动不连网记步吗(微信运动不连网,是不是没有步数?)

    微信运动不连网记步吗(微信运动不连网,是不是没有步数?)

  • 个人简历怎么做模板(个人简历怎么做ppt模板)

    个人简历怎么做模板(个人简历怎么做ppt模板)

  • ic卡能当id卡用吗(ic卡可以当id用么)

    ic卡能当id卡用吗(ic卡可以当id用么)

  • airpods只支持苹果吗(airpods只支持苹果手机吗)

    airpods只支持苹果吗(airpods只支持苹果手机吗)

  • ppt占位符怎么设置(ppt占位符怎么设置动画)

    ppt占位符怎么设置(ppt占位符怎么设置动画)

  • 红外幕帘探测器怎么用(红外幕帘探测器怎么区分主人)

    红外幕帘探测器怎么用(红外幕帘探测器怎么区分主人)

  • 微信设备锁在哪里关闭(微信设备锁在哪里找)

    微信设备锁在哪里关闭(微信设备锁在哪里找)

  • 怎样自己开发app软件(怎样自己开发app在手机上运行)

    怎样自己开发app软件(怎样自己开发app在手机上运行)

  • 荣耀20pro和荣耀20区别(荣耀20pro和荣耀20s区别)

    荣耀20pro和荣耀20区别(荣耀20pro和荣耀20s区别)

  • iphonex绿屏闪烁(iphonex绿屏闪烁怎么办)

    iphonex绿屏闪烁(iphonex绿屏闪烁怎么办)

  • ios如何安装qq文件(苹果怎么安装qq的文件)

    ios如何安装qq文件(苹果怎么安装qq的文件)

  • 个人出售普通住宅应当缴纳哪些税
  • 发票章是否需要到税务局备案
  • 个体户年报纳税额怎么填
  • 转让费和押金的区别
  • 增值税进项发票认证流程
  • 研发费用属于哪个费用
  • 金税盘如何查看开票机号
  • 已付款收不到发票怎么办
  • 开仓库需要营业执照吗
  • 企业所得税查增值税吗
  • 商贸流通企业包括哪些
  • 应收账款坏账损失专项报告
  • 因增资扩股导致股价下跌
  • 出租土地使用权计入什么科目
  • 发票专用章管理办法
  • 个人独资企业免税额度
  • 损失性费用的会计科目有
  • 土地所有权和使用权的法律规定
  • 应收账款年末余额过大
  • 承兑汇票属于现金支付吗
  • 什么情况下征收车船税
  • 房地产企业土地出让金抵减销项税额
  • vue中的...
  • php html5
  • 租赁的车间改造的会计分录
  • 预收一年的30万怎么算
  • 社会保险费缓缴政策
  • 莱茵地区在德国哪里
  • 企业与员工之间的法律
  • echarts引入地图
  • 企业生产车间发生的费用会计科目
  • php json_encode与json_decode详解及实例
  • 20221年最新
  • php绘图库
  • 建设单位和施工单位的责任和义务
  • 社保费和公积金一定要计提吗
  • 固定资产入账及摊销方法
  • 学电脑的好网站
  • mysql存long
  • 残保金申报基数
  • 空调维修保养方案
  • 金税三期个税申报
  • 加班打车费用计入什么科目
  • 金税三期升级功能2020
  • 会计调整以前年度遗留问题查不出来说明怎么写
  • 前程无忧效果怎么样
  • 准予抵扣销项税额
  • 公允价值变动损益借贷方向
  • 进项税额有抵扣期限吗
  • 一件产品在不同场合的价格
  • 企业风险管理有哪些方面
  • 吸收的三种方式
  • 什么是现金流量表分析的重点
  • sql比较数值大小
  • sql时间格式化大全
  • mysql导出查询结果sql
  • ubuntu 桌面
  • windows个性化设置在哪里
  • ubuntu添加环境变量后黑屏
  • windows的安装方式有哪些
  • 安装win8.1系统步骤
  • 怎么打开xp
  • 苹果mac怎么下载
  • ubuntu怎么将文件传送到电脑
  • win10预览版21301bug
  • jQuery实现select模糊查询(反射机制)
  • 你知道python不
  • vue2.0与bootstrap3实现列表分页效果
  • js函数全局变量
  • javascript教程完整版
  • js赋值input
  • 基于jQuery的ajax方法封装
  • python获取数据代码
  • 安卓数据储存方式有哪些
  • 重庆地方税务局12366
  • 医院是自给自足吗
  • 北京通州国税局进面分数2022
  • 广州市税务局副局长陈忠文
  • 去税务局补缴税款医疗费不带证件可以吗
  • pcie3.0*4接口
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设