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

问题原因: 浏览器问题

一、创建初始版本文件(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);
	    });
  	}
相关推荐
夏之小星星6 分钟前
el-tree结合checkbox实现数据回显
前端·javascript·vue.js
crazyme_620 分钟前
前端自学入门:HTML 基础详解与学习路线指引
前端·学习·html
撸猫79129 分钟前
HttpSession 的运行原理
前端·后端·cookie·httpsession
亦世凡华、1 小时前
Rollup入门与进阶:为现代Web应用构建超小的打包文件
前端·经验分享·rollup·配置项目·前端分享
琉璃℡初雪1 小时前
vue2/3 中使用 @vue-office/docx 在网页中预览(docx、excel、pdf)文件
vue.js·pdf·excel
Bl_a_ck1 小时前
【React】Craco 简介
开发语言·前端·react.js·typescript·前端框架
Z_z在努力1 小时前
【Redis 进阶】缓存
缓存
augenstern4162 小时前
webpack重构优化
前端·webpack·重构
海拥✘2 小时前
CodeBuddy终极测评:中国版Cursor的开发革命(含安装指南+HTML游戏实战)
前端·游戏·html
寧笙(Lycode)3 小时前
React系列——HOC高阶组件的封装与使用
前端·react.js·前端框架