答:主要通过四个方向控制:一是开启代码与资源的压缩/瘦身(如 terser、cssnano、imageoptim);二是做好依赖去重与树摇(tree-shaking);三是按需加载与分包(code-splitting);四是静态资源格式优化(WebP、brotli)。
在构建脚本中加入压缩插件、启用模块联邦或按路由拆包、对第三方库采用CDN外链或按需引入、对图片和字体做格式与质量配置。
自动化流水线应在不同环境使用不同构建配置:生产开启最大压缩与哈希,测试环境保留可读性。
答:通过稳定的文件版本策略和长缓存策略实现。对不可变资源使用内容指纹并设置长缓存头(Cache-Control: max-age),对可变资源使用短缓存或CDN回源校验。
构建输出文件名带哈希(contenthash),只有当内容变化时文件名才变,从而保证客户端和CDN能长期缓存静态资源,提高命中率同时避免缓存污染。
避免对HTML主入口文件使用长缓存,保持入口短缓存或使用服务端合并控制,以便新版本能及时生效。
答:使用构建工具在产物文件名中嵌入内容指纹(content hash),并配合版本清单(manifest.json)或资源映射表实现运行时解析与注入。
构建完成后生成映射表,CI 将映射表与静态资源一并发布到CDN,并在部署时替换后端模板或注入到HTML,确保引用与文件名一致。
保留历史文件若干天,配合CDN缓存失效策略,便于快速回滚且不影响旧客户端的缓存命中。
答:按需加载能把初始包体积降到最低,提高首屏速度;分包能把变化频繁的模块与稳定模块分离,稳定模块更容易命中缓存。
将第三方库和公用组件打成独立的vendor/chunk,业务路由按需加载,构建时保证vendor包尽量稳定并带指纹以利用长缓存。
分包过细会增加请求数,需配合HTTP/2或合并策略,评估请求开销与缓存收益的平衡。
答:通过CDN提供的统计(命中率、回源率)、浏览器端RUM(Resource Timing)和日志分析来量化命中率与回源成本。
在CI/CD流水线后触发自动化验证:调用页面并记录响应头(检查Cache-Control、ETag、x-cache),对比CI基线指标并将异常上报。
根据监控结果调整构建策略(如合并/拆分包、改变缓存策略、修正哈希策略),并将变更纳入自动化回归测试,以保证稳定的缓存命中率。
