以下是关于持久化缓存(contenthash)的深度技术解析,涵盖原理、配置策略及最佳实践,帮助我们构建高性能前端应用的缓存体系:
一、缓存机制核心原理
1. 浏览器缓存决策矩阵
触发条件
缓存行为
对应场景
URL 未变化 + 强缓存有效
直接读取磁盘/内存缓存
未修改的静态资源
URL 变化
发起全新请求
修改文件名后的资源更新
URL 未变化 + 缓存过期
发送协商缓存请求(304/200)
需要服务端校验的资源
2. 哈希策略类型对比
哈希类型
计算依据
稳定性场景
适用场景
hash
整个项目构建
任意文件修改即变化
不建议使用
chunkhash
入口依赖链
同入口链文件修改时变化
多入口基础方案
contenthash
文件二进制内容
仅文件内容修改时变化
持久化缓存最佳方案
二、Webpack 持久化缓存配置
1. 基础配置模板
output: {
filename: '[name].[contenthash:8].js' ,
chunkFilename: 'async/[name].[contenthash:8].chunk.js' ,
assetModuleFilename: 'assets/[hash][ext][query]'
}
const MiniCssExtractPlugin = require ( 'mini-css-extract-plugin' ) ;
plugins: [
new MiniCssExtractPlugin ( {
filename: 'css/[name].[contenthash:8].css' ,
chunkFilename: 'css/[name].[contenthash:8].chunk.css'
} )
]
2. 稳定性增强配置
optimization: {
moduleIds: 'deterministic' ,
chunkIds: 'deterministic' ,
runtimeChunk: {
name : entrypoint => ` runtime- ${
entrypoint. name} `
} ,
splitChunks: {
cacheGroups: {
vendor: {
test: / [\\/]node_modules[\\/] / ,
filename: 'vendors/[name].[contenthash:8].js'
}
}
}
}
三、哈希生成机制深度解析
1. 内容哈希算法流程