首页 > 其他分享 >webpack4.15.1 学习笔记(八) — 缓存(Caching)

webpack4.15.1 学习笔记(八) — 缓存(Caching)

时间:2023-01-02 22:11:17浏览次数:65  
标签:文件 缓存 dist webpack4.15 js webpack Caching path

目录

 

webpack 打包模块化后的应用程序,会生成一个可部署的 /dist目录,只要 /dist 目录中的内容部署到 server 上,client(通常是浏览器)就能够访问此 server 的网站及其资源。而最后一步获取资源是比较耗费时间的,这就是为什么浏览器使用一种名为 缓存 的技术。
通过命中缓存,降低网络流量,使网站加载速度更快,然而,在部署新版本时不更改资源的文件名,浏览器可能会认为它没有被更新,就会使用它的缓存版本。由于缓存的存在,当需要获取新的代码时,就会显得很棘手。

通过必要的配置,以确保 webpack 打包生成的文件能够被客户端缓存,而在文件内容变化后,能够请求到新的文件。

输出文件名(Output Filenames)

通过使用 output.filename 进行文件名替换,来定义输出文件的名称,可以确保浏览器获取到修改后的文件。webpack 提供了一种可替换模板字符串的方式,通过带括号字符串来模板化文件名[contenthash]将根据资产的内容创建唯一的哈希。当资产的内容发生变化时,[contenthash]也会发生变化。

const path = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
   entry: {
       index: './src/index.js',
   },
   plugins: [
       new CleanWebpackPlugin({
           cleanStaleWebpackAssets: false
       }),
       new HtmlWebpackPlugin({
           title: 'Caching'
       }),
   ],
   output: {
       filename: '[name].[chunkhash].js',    // dist 目录下生成 index.8e7356e76ac80f537595.js 文件
       path: path.resolve(__dirname, 'dist')
   }
};

缓存第三方库

SplitChunksPlugin可用于将模块拆分为单独的包。webpack 提供了一种优化功能,optimization.runtimeChunk

将第三方库如 lodash提取到单独的 vendor chunk 文件中,因为它们很少频繁修改。利用 client 的长效缓存命中来消减请求, 添加optimization.splitChunks.cacheGroups 参数并构建:

const path = require('path');
module.exports = {
    entry: {
        index: './src/index.js',
    },
    output: {
        filename: '[name].[chunkhash].js',
        path: path.resolve(__dirname, 'dist')
    },
    optimization: {
      splitChunks: {
        cacheGroups: {
          vendor: {
            test: /[\\/]node_modules[\\/]/,
            name: 'vendors',  // dist 目录生成 vendors.c9b22484d40ed904be57.js
            chunks: 'all',
          }
        }
      }
   }
};

将 js 文件放到一个文件夹中

全部 js 文件都在 dist 根目录下,将js统一放到一个文件夹中:

module.exports = {
  output: {
    filename: 'js/[name].[contenthash].js',  // 在前面加上路径即可
  },
};
 

标签:文件,缓存,dist,webpack4.15,js,webpack,Caching,path
From: https://www.cnblogs.com/sexintercourse/p/17020686.html

相关文章

  • http强制缓存、协商缓存、指纹ETag详解
    目录实操目录及步骤缓存分类强制缓存对比缓存指纹Etag摘要及加密算法缓存总结 每个浏览器都有一个自己的缓存区,使用缓存区的数据有诸多好处,减少冗余的......
  • Java:SpringBoot整合Redis实现数据缓存
    目录结构$tree.├──pom.xml└──src├──main│├──java││└──com││└──example││......
  • 详解前端缓存,解决前端换包之后环境中仍会出现旧版效果
    前端项目修改了很多东西:比如bug啊,样式啊。当你把前端项目打包之后满心欢喜的在Nginx(测试环境)换上它,然后在Jira上修改bug状态@测试人员复测。然后测试人员开始找你ba......
  • 缓存工具类
    packagecom.hmdp.utils;importcn.hutool.core.util.BooleanUtil;importcn.hutool.core.util.StrUtil;importcn.hutool.json.JSONObject;importcn.hutool.json.JS......
  • npm---缓存
    一、缓存位置window下的缓存位置(npm全局位置):user\xxx\AppData\Roaming\npm-cache当中的_cacache文件夹二、清理缓存//强制删除缓存npmcacheclean-f//无论在项目中......
  • 操作系统-cache高速缓存
    问题在cache中访问的内存地址为何会带有cache相关的信息,动机是什么?前言平时只知道cpu到内存之间还有一层cache,CPU要去主存找一个数据,第一反应肯定是到......
  • 本地Map缓存
    packagecom.cars.forwardservice.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.GetMapping;importor......
  • C# 有关缓存与内存
    ​​https://wenku.baidu.com/view/c50e7b5f1411cc7931b765ce050876323112746f.html​​​​​​​​https://www.xp.cn/b.php/62171.html​​​​​​https://www.xp.cn/b.......
  • 缓存:第一章:缓存优化
       更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120472695 ......
  • ASP.NET Core分布式缓存
    分布式缓存服务器1、常用的分布式缓存服务器有Redis、Memcached等2、.NETCore中提供了统一的分布式缓存服务器的操作接口IDistributedCache,用法和内存缓存类似3、分布式缓......