缓存类型有四种 disk、memory、service Worker、push cachehtml
push cache 是http2.0的,如今基本是1.1, 就不讨论了, service worker前端配置,这里也不讨论前端
缓存又分为强缓存和协商缓存, 默认状况下走协商缓存,后端
disk(磁盘)缓存 memory 内存缓存 都属于强缓存浏览器
设置强缓存后, 页面第一次加载 走的是 disk(磁盘)缓存, 若是刷新页面就会走 memory(内存)缓存, 固然内存有限不是因此都能从disk(磁盘)缓存走到memory(内存)缓存的.若是memory(内存)满了,那么没进入memory(内存)缓存的仍是从disk(磁盘)拿.缓存
默认缓存, 一次进入页面向后端请求资源, 若是刷新页面则和后端资源比对Etag 是否有改变,若是没有则使用已有资源,若是改变,则从新请求资源htm
html这类文件不建议设置强缓存,就算设置后,浏览器第一次进来走disk缓存, 若是手动刷新仍是会走协商缓存内存
设置强缓存就是在 response header 中 配置 Cache-Control资源
我的建议缓存时间设置为迭代的周期是比较合理的,若是公司一个月迭代一次那就设置一个月,不要说什么第三方库基本不更新能够设置久点,就拿单页的vendent.js来讲,第三包的集合,第三方包是不会改变,你肯定你不会加入新的包,或者删掉不用的包class
强缓存 => 协商缓存 => 资源请求配置
若是强缓存和协商缓存任何一个有命中就不会往下走