前言:
web中有些场景下很多内容是不需要更改的,如果每次请求都向服务器请求那些一段时间内不会变动的内容数据,会造成不必要的带宽浪费。
有时候网络较差时,请求这些内容就需要花费很长时间来打开页面。
因此通过浏览器的缓存机制,协同服务器让浏览器缓存那些不需要频繁变动的资源就可以有效地降低流量消耗和响应时间。
一、什么是浏览器缓存
浏览器缓存指的是:当客户端向服务器请求资源时,会先查看浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏览器缓存中提取,而不需要从服务器中请求这个资源。
需要注意的是,常见的浏览器缓存只能缓存GET请求的资源,所以下面说的请求缓存皆是指GET请求。
浏览器缓存分类:根据是否需要向服务器发起请求把http缓存分为两个大类,强缓存和协商缓存。
浏览器缓存都是从第二次请求开始的:
- 第一次请求资源时,客户端向服务器请求资源,服务器返回响应资源,并在response header中回传资源的缓存参数;
- 第二次请求资源时,浏览器判断这些请求参数,命中强缓存就返回200,使用磁盘缓存中的资源,不请求服务器,否则就把请求参数加到request header中传给服务器,看是否命中协商缓存,命中则返回304,使用缓存资源,若都没命中则服务器会返回新的资源。
二、强缓存
强缓存是通过设置缓存的