vue项目发布有缓存,正式环境不更新(解决方案)

这篇具有很好参考价值的文章主要介绍了vue项目发布有缓存,正式环境不更新(解决方案)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:每次测试构建或者打包更新版本发到服务器上,导致偶尔会出现不能及时更新到最新代码,浏览器存在缓存的问题。

一、js、css文件防缓存

定义版本变量: const  Version = new Date().getTime(); // 这里使用的是时间戳 来区分 ,实际上不用加时间戳,webpack内部还自动变化hash值

output: {
    path: config.build.assetsRoot,
    filename: utils.assetsPath('js/[name].[chunkhash].'+_Version+'js'),
    chunkFilename: utils.assetsPath('js/[id].[chunkhash].'+_Version+'js')
}

二、html文件防缓存

方法1、Linux服务器设置nginx禁用html缓存

在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。在常用的缓存设置里面有两种方式,都是使用add_header来设置:分别为Cache-Control和Pragma。

add_header Cache-Control no-store;
add_header Pragma no-cache;

server {
        listen       80;
        server_name  test.exmaple.cn;
 
 
        location / {
                if ($request_filename ~* .*\.(?:htm|html)$)  ## 配置页面不缓存html和htm结尾的文件
                {
                   add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
                }
                root /web/;
                index index.html;
                try_files $uri $uri/ /index.html =404;
        }
}

 方法2、index.html页面添加

<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">

方法3、(Vue-cli前端代码控制)

1.在public静态目录下新建version.json每次发版更改里面的版本号 

{
    "version": "0.0.1"
}

2.在src中新建 libs/versionUpdate.js文件

import axios from 'axios'
 
const isNewVersion = () => {
  let url = `//${window.location.host}/version.json?t=${new Date().getTime()}`
  axios.get(url).then(res => {
    if (res.status === 200) {
      let vueVersion = res.data.version || '1.0.0'
      let localVueVersion = localStorage.getItem('vueVersion')
      localStorage.setItem('vueVersion', vueVersion)
      if (localVueVersion && localVueVersion != vueVersion) {
        alert('检测到新版本,请点击确认刷新页面哦')
        window.location.reload(true)
        return
      }
    }
  })
}
 
export default {
  isNewVersion
}

3.在全局路由拦截中写,只要每次版本号不同就重新加载页面配合第一步就可以清楚浏览器缓存文章来源地址https://www.toymoban.com/news/detail-479700.html

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

到了这里,关于vue项目发布有缓存,正式环境不更新(解决方案)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IntelliJ IDEA 2023.1正式发布,Maven项目大提速&支持Apache Dubbo

    你好,我是 YourBatman :做爱做之事❣交配交之人。 一年一个大版本,共计3个中型版本 ,北京时间2023年3月月29日终于迎来了IntelliJ IDEA今年的首个版本2023.1。老规矩,吃肉之前,可以先把这几碗汤干了,更有助于消化(每篇都很顶哦): IntelliJ IDEA 2023.1正式发布,Maven项目大提

    2023年04月20日
    浏览(50)
  • uni-app项目的开发和发布流程(包括开发版、体验版、正式版)

    uni-app的开发和发布流程(包括开发版、体验版、正式版) 开发工具:HbuilderX编辑器、微信小程序开发工具 1、新建uni-app项目 2、运行到微信小程序(第一次可以从HbuilderX点进去,后面等发行包出来,可以导入里面dev文件夹里的mp-weixin) 3、发行版本(开发版-体验版-正式版)

    2024年02月08日
    浏览(42)
  • 前端部署发布项目后,如何通知用户刷新页面、清除缓存

    以下只是一些思路,有更好的实现方式可以留言一起交流学习 方式一:纯前端 在每次发布前端时,使用webpack构建命令生成一个json文件,json中写个随机生成的一个字符串(比如时间戳),每次打包程序都会自动更新这个json文件。 在项目中,通过定时任务或者在切换页面路由

    2024年02月05日
    浏览(42)
  • Jenkins+vue发布项目

    在Jenkins 中先创建一个任务名称 然后进行下一步,放一个项目 填写一些参数 参数1: 参数2: 参数3: 参数4: 点击保存就行了 配置脚本 在harbor网站里创建一个项目对应 harbor_project 与脚本相互对应, 如果不创建,镜像创建不成功 在下面这个网站里创建一个 k8s_namespace 与上面

    2024年02月07日
    浏览(30)
  • 将vue项目变成可发布的npm包项目

    第一步: 在main.ts 文件的平级上新建一个index.ts文件 ,文件中导出你想发布的组件 第二步: 在package.json文件的平级上新建index.js文件  第三步: 修改package.json文件,新增命令     \\\"buildnpm\\\": \\\"vue-cli-service build --target lib --name preview src/index.ts\\\"

    2024年02月07日
    浏览(25)
  • devops-发布vue前端项目

    回到目录 将使用jenkins+k8s发布前端项目 node环境 在部署jenkins的服务器上搭建node环境 node版本 验证环境没有问题后,将文件移动到jenkins的目录下 因为是docker部署的jenkins,挂载目录是/usr/local/docker/docker-jenkins/data,所以必须将node环境移动到该目录下,jenkins才能加载到 jenkins中下

    2024年02月14日
    浏览(21)
  • vue项目版本打包更新后文件及浏览器存在缓存问题解决方案

    在vue.config.js中配置output,打包后的文件会带时间戳 在public/static目录下新建version.json文件  在src中新建 utils文件夹 文件夹中新建versionUpdate.js文件  在src文件夹下创建addVersion.js  写法二 修改package.json中scripts中的打包命令 版本号自加使用fs修改文件来实现 具体思路是:在执行

    2024年02月11日
    浏览(36)
  • 基于Unity+Vue3通信交互的WebGL项目发布实践

    问题背景 我们最近需要把unity开发的pc项目迁移到web端,因为unity支持发布webgl。所以按照以往的开发流程,都是项目开发完成就发布webgl部署到服务器。 突然有一天,测试人员提出说为什么我们做的网页跟别人的不太一样呢?具体看下面两张图: 1、unity使用ugui做的界面发布

    2024年04月17日
    浏览(39)
  • vue+asp.net Web api前后端分离项目发布部署

    1.前端项目是使用vue脚手架进行创建的。 脚手架版本:@vue/cli 5.0.8 编译器版本:vs code 1.82.2 2.后端是一个asp.net  Core Web API 项目 后端框架版本:.NET 6.0 编译器版本:vs 2022 第一步:在vs code 编译器中的终端窗口输入如下命令,进行前端项目打包。 打包后文件如下所示: 第二步

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包