常用缓存方式
MemoryCache内存中的缓存,主要包含当前页面中已经抓取到的资源,页面上已经下载的样式、脚本、图片等。读取内存中的数据肯定比磁盘快,内存缓存虽然读取速度快,但缓存持续性很短,会随着进程的释放而释放。
计算机中的内存容量必定比硬盘容量低,如果都将缓存放置在内存中,必然会造成电脑卡顿等问题。
DiskCache存储在硬盘中的缓存,读取速度慢,但胜在容量上,什么都能存储到磁盘中,有更高的内存时效性。
在所有浏览器缓存中,DiskCache覆盖面是最大的,它会根据HTTP Herder中的字段判断哪些资源需要缓存,哪些资源可以不请求直接使用。哪些资源应经过期需要重新请求。并且即使在跨站点的情况下,相同地址的资源一旦被硬盘缓存下来,就不会再次去请求。
强缓存
强缓存不会向服务器发送请求,直接从缓存中读取资源,在chrome控制台的Network选项中可以看到该请求返回200的状态码,并且Size显示from disk cache或from memory cache。强缓存可以通过设置两种HTTP Headere实现:Expires和Cache-Control
1.Expires,缓存期间,用来指定资源到期的时间,是服务器端口的具体时间点。也就是说,Expires=max-age+请求时间,需要和Last-modified结合使用,Expires是Web服务器相应消息头子段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存存取数据,无需再次请求。
2.Cache-Control,在HTTP中,Cache-Control是最重要的规则,主要用于控制网页缓存。
3.对于两者之间的对比,相差并不是很大,Expires是http1.0的产物,Cache-Control是http1.1的产物,两者同时存在的话,cache-control的优先级高于Expires,在某些不支持http1.1的环境下,Expires就会发挥其用处。所以,简单点来说,Expires其实是过时的产物,现阶段它的存在只兼容一种写法。