学习nginx后读懂了缓存

1,232 阅读1分钟

缓存

缓存类型有四种 disk、memory、service Worker、push cache

push cache 是http2.0的,现在基本是1.1, 就不讨论了, service worker前端配置,这里也不讨论

缓存又分为强缓存和协商缓存, 默认情况下走协商缓存,

disk(磁盘)缓存 memory 内存缓存 都属于强缓存

强缓存

设置强缓存后, 页面第一次加载 走的是 disk(磁盘)缓存, 如果刷新页面就会走 memory(内存)缓存, 当然内存有限不是所以都能从disk(磁盘)缓存走到memory(内存)缓存的.如果memory(内存)满了,那么没进入memory(内存)缓存的还是从disk(磁盘)拿.

协商缓存

默认缓存, 一次进入页面向后端请求资源, 如果刷新页面则和后端资源比对Etag 是否有改变,如果没有则使用已有资源,如果改变,则重新请求资源

html这类文件不建议设置强缓存,就算设置后,浏览器第一次进来走disk缓存, 如果手动刷新还是会走协商缓存

设置强缓存就是在 response header 中 配置 Cache-Control

个人建议缓存时间设置为迭代的周期是比较合理的,如果公司一个月迭代一次那就设置一个月,不要说什么第三方库基本不更新可以设置久点,就拿单页的vendent.js来说,第三包的集合,第三方包是不会改变,你确定你不会加入新的包,或者删掉不用的包

缓存的整体流程

强缓存 => 协商缓存 => 资源请求

如果强缓存和协商缓存任何一个有命中就不会往下走