vue 部署上线清除浏览器缓存「建议收藏」

vue 部署上线清除浏览器缓存「建议收藏」vue项目打包上线之后,每一次都会有浏览器缓存问题,需要手动的清除缓存。这样用户体验非常不好,所以我们在打包部署的时候需要尽量避免浏览器的缓存。下面是我的解决方案:一、修改根目录index.html在head里面添加下面代码<metahttp-equiv=”pragram”content=”no-cache”><metahttp-equiv=”cache-control”content=”no-cache,no-store,must-revalidate”>

大家好,又见面了,我是你们的朋友全栈君。

vue 项目打包上线之后,每一次都会有浏览器缓存问题,需要手动的清除缓存。这样用户体验非常不好,所以我们在打包部署的时候需要尽量避免浏览器的缓存。下面是我的解决方案:

一、修改根目录index.html

在 head 里面添加下面代码

<meta http-equiv="pragram" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">

这种会让所有的css/js资源重新加载

二、配置 nginx 不缓存 html

vue默认配置,打包后css和js的名字后面都加了哈希值,不会有缓存问题。但是index.html在服务器端可能是有缓存的,需要在服务器配置不让缓存index.html

server { 
   
listen 80;
server_name yourdomain.com;
location / { 
   
    try_files $uri $uri/ /index.html;
    root /yourdir/;
    index index.html index.htm;

    if ($request_filename ~* .*\.(?:htm|html)$)
    { 
   
        add_header Cache-Control "no-cache, no-store";  //对html文件设置永远不缓存
    }  
  }
}

no-cache浏览器会缓存,但刷新页面或者重新打开时 会请求服务器,服务器可以响应304,如果文件有改动就会响应200
no-store浏览器不缓存,刷新页面需要重新下载页面

三、打包的文件路径添加时间戳

1、在 vue-cli2.x 创建的项目里,找到 build/webpack.prod.conf.js 文件

//定义一个变量获取当前时间戳
const version = new Date().getTime();
//output模块将时间戳加入到输出的文件名里
output: { 
   
  publicPath: '/',
  path: config.build.assetsRoot,
  filename: utils.assetsPath(`js/[name].[chunkhash].${ 
   version}.js`),
  chunkFilename: utils.assetsPath(`js/[id].[chunkhash].${ 
   version}.js`)
},

//css文件名加时间戳
new ExtractTextPlugin({ 
   
    filename: utils.assetsPath(`css/[name].[contenthash].${ 
   version}.css`),
    allChunks: true,
}),

2、在 vue-cli3.x 创建的项目里,打开 vue.config.js 文件 ( 没有该文件自己在 src 同级目录下创建一个 )

const version = new Date().getTime();
module.exports = { 
   
  	outputDir: 'dist', //打包的时候生成的一个文件名
	lintOnSave: false,
  	productionSourceMap: false,
  	css: { 
   
	    loaderOptions: { 
   
	      sass: { 
   
	        data: `@import "@/components/themes/_handle.scss";`
	      }
	    },
	    // 是否使用css分离插件 ExtractTextPlugin
	    extract: { 
   
	      // 修改打包后css文件名 // css打包文件,添加时间戳
	      filename: `css/[name].${ 
   version}.css`,   
	      chunkFilename: `css/[name].${ 
   version}.css`
	    }
	 },
  	configureWebpack: { 
   
		output: { 
    // 输出重构 打包编译后的 文件名称 【模块名称.版本号.时间戳】
		     filename: `js/[name].[chunkhash].${ 
   version}.js`,
		     chunkFilename: `js/[id].[chunkhash].${ 
   version}.js`
		}
	}
}

效果:
在这里插入图片描述

如有异议,欢迎留言讨论!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161123.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数字图像处理标准图像Lena的故事「建议收藏」

    数字图像处理标准图像Lena的故事「建议收藏」熟悉图像处理或者压缩的工程师、研究人员和学生经常在他们的实验或者项目任务里使用“Lenna”或者“Lena”的图像。Lenna图像已经成为被广泛使用的测试图像。今天,Lenna图像的使用被认为是数字图像历史上最重要的事件之一。然而,很少有人看过原始的图像并知道完整的关于Lenna的故事。这里3sBeta将综合收集的材料对此做一个详细的梳理。。。1.Lena图像的来源在数

    2022年6月19日
    31
  • 网络编程——UDP编程

    网络编程——UDP编程一、网络编程基础1.常用协议:IP协议;TCP协议;UDP协议;2.什么是Socket?二、服务器端的代码实现三、客户端的代码实现1.区别2.易混淆知识点四.代码实现五.最后小结

    2025年10月8日
    2
  • PyCharm几个常用的快捷键「建议收藏」

    PyCharm几个常用的快捷键「建议收藏」咪哥杂谈本篇阅读时间约为3分钟。1前言PyCharm作为一款Python语言的代码编辑器,在市场上广为人知。尤其是一些工程性项目来说,PyCharm非常友好。实际上,如果你要是了…

    2022年8月29日
    3
  • 加壳工具的使用

    加壳工具的使用加壳工具的使用0x01前言0x01加壳简介0x02ASPack加壳0x03PE-Armor加壳0x01前言这是我对加壳工具的使用的学习记录。0x01加壳简介1.加壳:是一种通过一系列数学运算,将可执行程序文件(EXE)或动态链接库文件(DLL)的编码进行改变(目前加壳软件还可以压缩、加密),以达到缩小文件体积或加密程序编码的目的。当被加壳的程序运行时,外壳程序先被执行,然后由这…

    2022年6月27日
    30
  • 只要是使用函数file_get_contents访问 https 的网站都要开启

    只要是使用函数file_get_contents访问 https 的网站都要开启

    2021年10月17日
    69
  • MQTT服务器搭建与试用,桌面工具连接MQTT服务器

    MQTT服务器搭建与试用,桌面工具连接MQTT服务器简介MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。MQTT现在主要用于即时通讯,物联网M2M,物联网采集等。本文就社区上常见的开源MQTT服务器在常见操作系统上的搭建做详细介绍。目前一些开源MQTT服…

    2022年5月29日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号