[toc]chrome
浏览器会在咱们的硬盘上开辟一块控件来存储资源副本,一个请求从浏览器缓存里调出几乎是当即显现出来的,好比一张图片。 首页通常不会被缓存浏览器
备注:缓存
- 具体实现和浏览器有关,在chrome中测试永远返回
200 OK
,由于请求头中不会带有校验信息(无论请求头和响应头谁设置了)。可是Safari中,会先去验证。- 从字面上看很容易把
no-cache
理解成‘不缓存’,但事实上表明不缓存过时的资源,缓存会向源服务器进行有效期确认后处理资源,no-store
才是真正的不缓存资源
备注:服务器
- 在缓存周期(新鲜期)内, 请求不会去访问服务端资源, 直接去缓存取副本资源,并返回状态
200 from cache
;- 若是资源更新了, 缓存新内容, 返回
200
;- 过了新鲜期后,请求会带着验证器访问服务器, 若是资源没有变化, 则继续取的是缓存数据, 并返回
304 Not Modified
, 并更新新鲜度;- 若是服务端已没有此资源, 删除缓存, 返回
404
;- 若是参数为0,那么缓存服务器一般会将请求转向源服务器;
ETage
值相同,才返回资源。(if-None-match
与之相反)服务端相应的为
ETag
网络
服务端相应的为
Last-modified
负载均衡
多半是网站管理员部署,一般使用某种形式的负载均衡器,使多个网关看起来就像是原服务器。CDN(内容分发网络Content delivery network)为整个或部分网络分配网关缓存,而后把这些缓存卖给须要的网站。ide
建议更新资源的时候,更新资源名称测试
能够以埋点的方式检测访问量,设置流量很小的请求不进行缓存网站