前端发版(发包)缓存,需要强制刷新问题处理

问题原因: 浏览器问题

一、创建初始版本文件(public/version.json)

js 复制代码
{ "version": "1722240835844" }

二、设置版本判断(version.js)

js 复制代码
import axios from "axios";

const isNewVersion = () => {
  let baseUrl = `/version.json?t=${new Date().getTime()}`;
  axios.get(baseUrl).then((res) => {
    if (res.status === 200) {
      let webappVersion = res.data.version;//当前项目发布的版本
      let localWebappVersion = localStorage.getItem("webappVersion");//缓存中的版本
  
      if (localWebappVersion && localWebappVersion != webappVersion) {
        // 如果没有缓存版本 或者 缓存版本与当前项目发布版本不一致时 强行刷新
        localStorage.setItem("webappVersion", webappVersion);
        window.location.reload();
        return;
      } else {
        localStorage.setItem("webappVersion", webappVersion);
      }
    }
  });
};
export default isNewVersion;

三、设置全局监听(main.js. permission.js)

js 复制代码
router.beforeEach((to, from, next) => {
  //判断当前代码版本是否与服务器中代码版本一致,如不一致则刷新页面获取最新
  isNewVersion(); 
});

四、生成打包版本(vite.config.js)

  1. 引入变量
js 复制代码
    const path = require("path");
    const fs = require("fs");
  1. 生成版本代码
js 复制代码
	// 如果当前时打包行为 生成最新版本号
	if (command == "build") {
	    //打包时生成版本号
	    let version = {
	      version: JSON.stringify(new Date().getTime()),
	    };
	    fs.writeFile("./public/version.json", JSON.stringify(version), () => {
	      console.log("新版本号生成成功", version);
	    });
  	}
相关推荐
如若12328 分钟前
对文件内的文件名生成目录,方便查阅
java·前端·python
滚雪球~1 小时前
npm error code ETIMEDOUT
前端·npm·node.js
沙漏无语1 小时前
npm : 无法加载文件 D:\Nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本
前端·npm·node.js
supermapsupport1 小时前
iClient3D for Cesium在Vue中快速实现场景卷帘
前端·vue.js·3d·cesium·supermap
brrdg_sefg1 小时前
WEB 漏洞 - 文件包含漏洞深度解析
前端·网络·安全
胡西风_foxww1 小时前
【es6复习笔记】rest参数(7)
前端·笔记·es6·参数·rest
m0_748254881 小时前
vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
前端·vue.js·elementui
星就前端叭2 小时前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
m0_748234522 小时前
前端Vue3字体优化三部曲(webFont、font-spider、spa-font-spider-webpack-plugin)
前端·webpack·node.js
Web阿成2 小时前
3.学习webpack配置 尝试打包ts文件
前端·学习·webpack·typescript