相关文章推荐
憨厚的茶壶  ·  西塘镇_百度百科·  2 周前    · 
聪明伶俐的枇杷  ·  萨索洛2-2萨勒尼塔纳,索尔茨维特双响,布拉 ...·  1 年前    · 
腼腆的手链  ·  缅甸雍籍牙王朝的国家制度-四川大学期刊社·  1 年前    · 
呐喊的便当  ·  羽毛球馆场地外包导致学生订不到场地·  1 年前    · 
失眠的荒野  ·  世界第一美少年魔幻的亚当:伯恩.安德森——征 ...·  1 年前    · 
Code  ›  vue 部署上线清除浏览器缓存「建议收藏」开发者社区
vue 缓存服务器 css 浏览器缓存
https://cloud.tencent.com/developer/article/2101298
严肃的电池
1 年前
作者头像
全栈程序员站长
0 篇文章

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

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 全栈程序员必看 > vue 部署上线清除浏览器缓存「建议收藏」

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

作者头像
全栈程序员站长
发布 于 2022-09-09 11:39:46
2K 0
发布 于 2022-09-09 11:39:46
举报

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

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`,
 
推荐文章
憨厚的茶壶  ·  西塘镇_百度百科
2 周前
聪明伶俐的枇杷  ·  萨索洛2-2萨勒尼塔纳,索尔茨维特双响,布拉耶-迪亚破门|卡斯蒂列 ...
1 年前
腼腆的手链  ·  缅甸雍籍牙王朝的国家制度-四川大学期刊社
1 年前
呐喊的便当  ·  羽毛球馆场地外包导致学生订不到场地
1 年前
失眠的荒野  ·  世界第一美少年魔幻的亚当:伯恩.安德森——征服了几乎所有人对 ...
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号