老师你好,有个面试题想请教
来源:10-26 webpack面试真题-前端代码为何要打包
Darkholme
2021-05-08
原题目是这样的,面试官问前端性能优化你都做过哪些?完了说着说着我就说到webpack打包这里了,然后提到了webpack打包后产生的文件唯一标识contentHash会命中浏览器的协商缓存,减少http请求。面试官就问我这个哈希值为什么会命中协商缓存?我就答浏览器会检查是否携带Etag这个Header,Etag可以是一个文件的唯一标识,而webpack打包后产生的哈希值就对应了这个标识,所以会命中协商缓存(基本上就围绕协商缓存那一套在说)。但是面试官貌似不太满意。我该怎么答呢,或者说我是不是对于webpack打包和缓存的关系理解有误?
写回答
2回答
-
contentHash 并不是协商缓存,而是强缓存,nginx 会设置如:
Cache-Control: max-age=31536000
只要 js (或者 css img 等静态文件)文件内容发生变化,contentHash 肯定会变,而且 html 内的 js 地址也会随着变。所以,每次生成的 js 都用强缓存即可。
152023-04-07 -
美丽life
2022-06-20
老哥这是在一本正经的瞎扯啊。。。webpack 打包是在前端,后端产生的 etag 怎么回知道呢。。。
10
相似问题