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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • currentstyle 织梦_织梦DEDE栏目高亮channel属性currentstyle采用详解[通俗易懂]

    currentstyle 织梦_织梦DEDE栏目高亮channel属性currentstyle采用详解[通俗易懂]织梦DEDECMScms被点击的栏目高亮显示办法详解,织梦DEDE栏目高亮channel属性currentstyle采用详解,废话不多说直接举例说明:织梦DEDEchannel属性currentstyle的例子:{dede:channeltype=’self’currentstyle=”~typename~”}[field:typename/]{/dede:channel}看例子样式,通过对当…

    2022年7月14日
    19
  • 华三路由交换配置命令_h3c路由器配置命令都有哪些 h3c路由器配置命令大全【详解】…[通俗易懂]

    华三路由交换配置命令_h3c路由器配置命令都有哪些 h3c路由器配置命令大全【详解】…[通俗易懂]对于一般的家庭路由器而言,我们是不需要对他进行配置的。因为家庭路由器这一种小型路由器一般都已经了确定的指令去执行。但是对于一些大型路由器而言,配置命令是非常重要的。正是因为有了配置命令的存在,才能够使大型路由器实行大规模的命令执行。那么接下来,小编就来给大家以H3C路由器为例子,讲讲大型路由器的一些常用基本配置命令吧。快捷键Ctrl+A,将光标移动到当前行的开头Ctrl+B,将光标向左移动一个…

    2022年10月17日
    3
  • time_npl_timebeginperiod

    time_npl_timebeginperiod文章目录作用1准备1.1LunarSolarConverter.py1.2RangeTimeEnum.py1.3StringPreHandler.py1.4TimeNoemalizer.py1.5TimeUnit.py2测试3时间的正则表达式regex.txt信息来源Coconlp作用用于句子中时间词的抽取和转换res=tn.parse(target=u’过十分钟’)#target为待分析语句,timeBase为基准时间默认是当前时间print(res)

    2025年6月9日
    4
  • 本草纲目pdf彩图版下载_本草纲目彩色图谱下载|本草纲目彩色图集(精编珍藏版) PDF电子版 – 天天游戏吧…

    本草纲目pdf彩图版下载_本草纲目彩色图谱下载|本草纲目彩色图集(精编珍藏版) PDF电子版 – 天天游戏吧…本草纲目彩色图集以诸种版本中最完整的金陵本为蓝本,严格选择最常见、最实用的药物加以介绍,从实用角度讲解,并配以彩色图谱,避免使用艰涩难懂的文言文,而是把它译为通俗易懂的现代文,所选取的多是在生活中较为常见,贴近生活、实用性强的内容,是生活中必备的浓缩精华读本,不仅是医务工作者专业学习参考的医书,更是人们生活中必备的自我保健、自我医疗的家用手册。内容简介《本草纲目》是我国古代医学宝库中珍贵的科学遗产…

    2022年7月15日
    20
  • JavaBean详解

    JavaBean详解一、概述JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、SP等Java应用程序调用.也可以可视化地被Java开发工具使用。它包含属性(Properties)、方法(Methods)、事件(Events)等特性。***JavaBean是一种软件组件模型,就跟ActiveX控件一样,它们提供已知的功能,可以轻松重用并集成到应用程序中的java类。***任何可以用J…

    2022年7月17日
    17
  • OHEM[通俗易懂]

    OHEM[通俗易懂]TrainingRegion-basedObjectDetectorswithOnlineHardExampleMining00Astract摘要主要讲了四点:(1)训练过程需要进行参数的空间搜索(2)简单样本与难分辨样本之间的类别不平衡是亟需解决的问题(3)自动地选择难分辨样本来进行训练不仅效率高而且性能好(4)提出了OHEM算法,不仅效率高而且性能好,在各种数据集上表…

    2022年5月7日
    54

发表回复

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

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