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

问题原因: 浏览器问题

一、创建初始版本文件(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);
	    });
  	}
相关推荐
gnip4 小时前
Jst执行上下文栈和变量对象
前端·javascript
excel4 小时前
🐣 最简单的卷积与激活函数指南(带示例)
前端
醉方休5 小时前
npm/pnpm软链接的优点和使用场景
前端·npm·node.js
拉不动的猪5 小时前
简单回顾下Weakmap在vue中为何不能去作为循环数据源,以及替代方案
前端·javascript·vue.js
How_doyou_do5 小时前
数据传输优化-异步不阻塞处理增强首屏体验
开发语言·前端·javascript
奇舞精选5 小时前
超越Siri的耳朵:ASR与Whisper零代码部署实战指南
前端·人工智能·aigc
奇舞精选5 小时前
Nano Banana 如何为前端注入 AI 控制力
前端·aigc
一支鱼5 小时前
基于 Node.js 的短视频制作神器 ——FFCreator
前端·node.js·音视频开发
DT——5 小时前
前端登录鉴权详解
前端·javascript
李姆斯5 小时前
复盘上瘾症:到底什么时候该“复盘”,什么时候不需要“复盘”
前端·后端·团队管理