前端项目部署更新后,不清缓存也能得到最新静态资源文件

5 篇文章 0 订阅
1 篇文章 0 订阅

首先我们得知道,SPA应用打包后的js、css等信息全都在index.html文件中导入,我们每次打包的时候,这些静态资源文件会携带一个hash值,如果hash值不变的话,又存在缓存的话就会走强缓存或者协商缓存,导致静态资源不是最新的。那么如何能达到项目上线后不清缓存页面也能获取到最新静态资源呢?
那么解决方案也有很多种,我这边采用的比较简单粗暴,每次打包都给文件后面加一个时间戳,那么每次刷新页面的时候index.html里导入的静态资源就会找不到缓存,这时候就会从服务器请求最新资源。

如何配置打包文件带时间戳呢?使用chainWebpack或者configureWebpack。

chainWebpack是vuecli提供的操作webpack的语法糖,作用和configureWebpack一样,都是修改webpack配置,

  1. 首先配置js打包名称,

planA: 使用chainWebpack,chainWebpack是一个对象。

chainWebpack: (config) => {
        config.output.filename(`js/js[name].${timeStamp}.js`).chunkFilename(`js/chunk.[id].${timeStamp}.js`);
        }

planB: 使用configureWebpack,configureWebpack是一个对象或者函数,如果你需要基于环境有条件地配置行为,或者想要直接修改配置,那就换成一个函数。

configureWebpack: (config) => {
        if (process.env.NODE_ENV === 'production') {
            config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true;
            config.output.filename = `js/js[name].${timeStamp}.js`;
            config.output.chunkFilename = `js/chunk.[id].${timeStamp}.js`;
        }
    },

或者使用对象

 configureWebpack: {
        output: { // 输出重构 打包编译后的js文件名称,添加时间戳.
            filename: `js/js[name].${timeStamp}.js`,
            chunkFilename: `js/chunk.[id].${timeStamp}.js`,
        }
    },

2.配置css资源

   ...configureWebpack,
    css: { 
        extract: { // 打包后css文件名称添加时间戳
            filename: `css/[name].${timeStamp}.css`,
            chunkFilename: `css/chunk.[id].${timeStamp}.css`,
        }
    },

在这里插入图片描述
打包完的文件包含一个app,此时我们导出vuecli webpack配置vue inspect > output.js,可以看到有个app
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值