当前位置: 首页 > news >正文

前端项目部署后,需要刷新页面才能看到更新内容

问题背景

前端项目部署更新后,通知业务验证,业务点击收藏的标签,打开网页后没有看到修改的内容,每次都需要手动刷新,用户体验非常不好。

问题原因:缓存未过期,浏览器直接读取本地缓存,而未从服务器请求新的资源,如下所示。

请求方法: GET
状态代码: 200 OK (来自磁盘缓存)

解决方法

在 build 目录下创建 generate.js,目的是每次打包时在 public 目录下生成 app-version.json 文件

// /build/version/generate.jsconst fs = require('fs')
const path = require('path')module.exports = function generateAppVersion(appVersion) {try {let obj = {appVersion: String(appVersion)}fs.writeFileSync(path.resolve('public/app-version.json'), JSON.stringify(obj))} catch (error) {console.error(error)}
}

在 vue.config.js 中调用 version.js

const generateAppVersion = require('./build/version/generate.js')
const timestamp = Date.now()
generateAppVersion(timestamp)

执行 npm run build,可以看到 public 中多了 app-version.json 文件

{"appVersion":"1698742226172"}

src 文件下创建 version.js,在 main.js 中 import 引入,进行新旧版对比并刷新浏览器。

import axios from 'axios'async function compare() {let last = window.localStorage.getItem('app_version') // 旧版本let current = await queryVersion() // 新版本if(!last) {setVersion(current)}if(last && last != current) { // 新旧版本不一样setVersion(current)window.location.reload() // 自动刷新浏览器}
}function setVersion(version) {window.localStorage.setItem('app_version', version)
}/*** 请求新版本* @returns */
async function queryVersion() {return axios.get(window.location.origin + window.location.pathname + './app-version.json?r=' + Math.random()).then(({data}) => {return data.appVersion})
}compare()
http://www.lryc.cn/news/214459.html

相关文章:

  • android 13 write javaBean error at *** 错误
  • Only fullscreen opaque activities can request orientation
  • 前端实验(一)单页面应用的创建
  • 数字人小灿:始于火山语音,发于 B 端百业
  • 蓝桥杯刷题
  • Go Metrics SDK Tag 校验性能优化实践
  • 二叉树问题——前/中/后/层遍历问题(递归与栈)
  • Vue3问题:如何实现级联菜单的数据懒加载?
  • STM32-电源管理(实现低功耗)
  • vue 自己捣鼓周日程日历组件
  • 【力扣】2127. (分类讨论 + 拓扑排序)参加会议的最多员工数
  • Flutter——最详细(Map)使用教程
  • vue的入门第一课
  • 已解决:conda找不到对应版本的cudnn如何解决?
  • 大语言模型的学习路线和开源模型的学习材料《二》
  • Flask-SQLAlchemy事件钩子介绍
  • C++——list
  • 【Linux】第九站:make和makefile
  • 一文了解什么是WebSocket
  • redis是什么
  • 基于深度学习的人脸专注度检测计算系统 - opencv python cnn 计算机竞赛
  • 跨境电商的新引擎:崛起的网红经济
  • P2006 赵神牛的游戏 python解法
  • Unity的碰撞检测(六)
  • 从前序与中序遍历序列构造二叉树
  • antd5上传图片显示405解决
  • 生成瑞利信道(Python and Matlab)
  • 数据结构Demo——简单计算器
  • java实现多文件打包压缩,导出zip文件
  • java-枚举类的使用