缓存
缓存类型有四种 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来说,第三包的集合,第三方包是不会改变,你确定你不会加入新的包,或者删掉不用的包
缓存的整体流程
强缓存 => 协商缓存 => 资源请求
如果强缓存和协商缓存任何一个有命中就不会往下走