webpack文件指纹:hash、chunkhash与contenthash详解

文件指纹就是打包后输出文件的后缀,每次构建都会生成不同的文件后缀,这样可以防止浏览器的默认缓存,使客户端代码可以及时修改。

文件指纹的三种方式:

  •  hash ‌:基于整个项目构建内容生成全局哈希值,任何文件修改都会导致值变化,不适合缓存优化。 ‌
  •  chunkhash ‌:为每个入口文件生成独立哈希值,仅当文件或依赖模块内容变化时更新,利于缓存控制,适合用于入口文件及其依赖模块的缓存优化。 ‌
  •  contenthash ‌:根据文件内容生成哈希值,内容不变则值不变,常用于CSS/JS等静态资源。
npm install mini-css-extract-plugin -D
npm i copy-webpack-plugin -D  
// webpack.config.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {output: {// 对于 JS 文件,通常使用 chunkhashfilename: 'js/[name].[chunkhash:8].js',// 对于非入口 chunk,如异步加载的模块chunkFilename: 'js/[name].[chunkhash:8].chunk.js',// 输出目录path: path.resolve(__dirname, 'dist')},module: {rules: [{test: /\.css$/,use: [{loader: MiniCssExtractPlugin.loader,},'css-loader']}]},plugins: [// 对于 CSS 文件,使用 contenthashnew MiniCssExtractPlugin({filename: 'css/[name].[contenthash:8].css',chunkFilename: 'css/[name].[contenthash:8].chunk.css'}),// 处理图片等资源new CopyWebpackPlugin({patterns: [{from: path.resolve(__dirname, 'src/assets'),to: 'assets/[name].[hash:8].[ext]'}]})]
};

说明

总结

  • [name] 表示模块名称
  • [hash:8][chunkhash:8][contenthash:8] 表示取哈希值的前 8 位
  • 通常建议将不同类型的文件放在不同目录(如 js/、css/、assets/)便于管理
  • JS 文件推荐使用 chunkhash
  • CSS 文件推荐使用 contenthash(需要配合 MiniCssExtractPlugin
  • 图片等静态资源可以使用 hash 或 contenthash
  • 哈希长度一般取 8-16 位即可,既能保证唯一性又不会过长

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94384.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytest 插件怎么写:从0开发一个你自己的插件

概述 你用过 pytest-html 生成报告,或用 pytest-xdist 并行运行测试吗?这些强大的功能,其实都是 Pytest 插件 这些都是我们引入项目后直接使用的,当然 你也可以自己写一个 Pytest 插件 基本原理 Pytest 的强大,源于它的 插件系统。它允许你通过定义特定的函数(称为 H…

Java:IO流——基础篇

目录 前言 一、File 类 1、概述 ①构造方法 ②实例对象 2、使用 ①查看名称、路径、长度 ②判断、创建和删除操作 ③目录遍历操作 二、IO流 1、流的概念 2、流的分类 ①按数据流向 ②按数据类型 ③按功能 3、字节流 ⑴FileInputStream——文件输入流 ⑵FileOutputStream——文件…

数据挖掘 5.1~5.2 PCA——前言

5.1 Twelve ways to fool the masses 5.1 愚弄大众的十二种方法 5.2.1 Prelim: Old MacDonald meets Lagrange 5.2.1 前言:老麦克唐纳遇见拉格朗日 5.2. Prelim: Meet stubborn vectors 5.2. 前言:遇见顽固向量 5.2.3 Prelim: Covariance and its friend…

DeepSeek分析

(非走向数字时代,融入数字生活,构建数字生态的分解,只是感觉可以分享给大家---因此现设置VIP,旺海涵) 这是deepseek刚爆的时候,春节紧急对其做的分析。 内容还是私藏状态,做了初步评估,感觉可以分享给大家!!! 但是非共享的构建数字生态的核心,因此添加了vip设置…

2025第五届人工智能、自动化与高性能计算国际会议 (AIAHPC 2025)

重要信息 官网:www.aiahpc.org 时间:2025年9月19-21日 地点:中国合肥 主题 1、高性能计算 并行和分布式系统架构 高性能计算的语言和编译器 并行和分布式软件技术 并行和分布式算法 嵌入式系统 计算智能 点对点计算 网格和集群计算…

CORS解决跨域问题的多个方案 - nginx站点配置 / thinkphp框架内置中间件 / 纯前端vue、vite的server.proxy代理

效果图 跨域报错 跨域解决 方案实测 1. nginx、apache站点配置 > OK 2. thinkphp框架内置中间件 “跨域请求支持” > OK 3. 纯前端vue、vite的server.proxy代理 > 不OK 方案具体设置 1. nginx、apache站点配置 > OK 修改nginx服务器的站点的跨域信息 日志下…

什么是Omni-Hub?一套面向“万物智联”时代的操作系统级方法论

Omni-Hub(中文常译“全向中枢”),是一套面向未来数字化生态的开放型系统级框架,由“Omni”(全域、全向、全模态)与“Hub”(中枢、枢纽)组合而成,旨在通过统一接口、协议与…

ARP地址解析协议

工作原理ARP是一个封装于数据链路层的二层协议,其目的主要是将IP地址解析为MAC地址,通过广播🔉询问Who is x.x.x.x,对方收到后单播回应自己的mac地址动态ARP动态ARP通过ARP协议自动学习和维护IP与MAC的映射关系,表项具…

PortSwigger靶场之Blind SQL injection with out-of-band interaction通关秘籍

一、题目分析 该实验室存在一个盲 SQL 注入漏洞。该应用程序使用跟踪 cookie 进行分析,并执行包含所提交 cookie 值的 SQL 查询。该 SQL 查询是异步执行的,不会对应用程序的响应产生影响。不过,我们可以与外部域触发非带内交互。要解决此漏洞…

笔试-笔记3

1.在以下声明中哪一个表示“指向常量的指针”(指针指向的内容不能修改)? A.char* const p B.const char* p C.char *p const D.char const p 解析: 选B,const修饰的变量为常量,意味着不能修改 A是常量指针,const修饰的…

Linux正则表达式

文章目录一、Linux正则表达式与三剑客知识1.什么是正则表达式?2.为什么要学习正则表达式?3.有关正则表达式容易混淆的事项4.学习正则表达式注意事项5. 正则表达式的分类5.1 基本的正则表达式(BRE)集合6. 正则表达式测试题7. 扩展正…

MATLAB Figure画布中绘制表格详解

文章目录 1 使用uitable创建带有样式和颜色映射的表格 2 使用imagesc和text创建自定义表格 3 使用patch和text创建完全自定义的表格 4 代码详细讲解 4.1 使用uitable 4.2 使用imagesc和text 4.3 使用patch和text 5 颜色映射技巧 5.1 使用内置颜色映射 5.2 自定义颜色映射函数 5…

Python在语料库建设中的应用:文本收集、数据清理与文件名管理

一、问题的提出在日常语言学习与教学中,语料库是一个不可或缺的工具。它可以帮助我们查找高频词,获取搭配信息、例句信息、关键词信息等。由于建库过程操作步骤多,有时还要用到图片识别、格式转化、文本清理等技巧,很多人往往都止…

STL——priority_queue的使用(快速入门详细)

目录 前言 一、基本知识 二、使用 前言 priority_queue是在queue库里的,所以使用的时候要包含queue头文件。使用方法和堆类似,因为它的底层其实就是大根堆。 一、基本知识 优先队列优先级队列是一种容器适配器,根据一些严格的弱排序标准&…

MATLAB中函数的详细使用

一、函数基本知识function语法: function [,...,] myfun(,...,), …

服务器初始化流程***

前言在云计算与自动化运维日益成熟的今天,快速、批量地部署服务器已成为常态。然而,一台新构建的云服务器或新安装的物理服务器,仅仅是一个可运行的操作系统内核,远未达到投入生产环境或开发测试的标准。一个缺乏标准化配置的“裸…

Python实现电商Excel读取进行可视化分析

目录专栏导读项目简介功能特性📊 数据处理功能📈 统计分析功能🎨 可视化功能📋 报告生成项目结构安装和使用环境要求安装步骤使用自己的数据依赖包说明输出文件说明静态图表(PNG格式)交互式图表&#xff08…

肌肉力量训练

健身一年多瘦了十几斤,没有像上次一样吃轻食哦。每天早晨跑步或者做力量训练,中午和晚上吃完饭遛遛弯,坚持下来就好了。 但力量训练一直没有请教练,自己也没查资料,算是瞎练吧。最近发现了一本好书,讲解如何…

微服务-27.配置管理-什么是配置管理

一.配置管理到目前为止我们已经解决了微服务相关的几个问题:微服务远程调用微服务注册、发现微服务请求路由、负载均衡微服务登录用户信息传递不过,现在依然还有几个问题需要解决:我们发现很多微服务中的配置文件里的配置都是重复的。修改编辑…

【RAGFlow代码详解-13】RAG 管道

管道架构概述 RAG 管道由多个处理阶段组成,这些阶段将文本内容转换为适合智能检索的结构化知识表示:文档到知识图谱工作流程 主要处理工作流程通过 run_graphrag 功能将单个文档块转换为统一的知识图谱:GraphRAG 处理方法 RAGFlow 支持两种不…