Http缓存机制

一、缓存的优点

1.减少了冗余的数据传输

2.缓解了网络瓶颈的问题

3.降低了对原始服务器的要求

4.降低了距离时延

了解的几个名词

带宽瓶颈:很多网络为本地网络客户端提供的带宽比远程网络客户端要大。

瞬间拥塞:很多人几乎同时访问同一台服务器。

距离时延:光速传播的时延。

二、缓存命中

1.如何区别是否命中

无论是否缓存命中,返回的http状态码都是200 ok,

可以使用Date首部,或者是Age首部。

将其时间与当前时间进行比较。

三、缓存的拓扑结构

1.缓存的分类

私有缓存:一般都是浏览器自身的缓存。

公有代理缓存:多台网络客户端共享的一个缓存服务器。

2.缓存的层次结构

一般的缓存结构为更为复杂的网状缓存

四、缓存的处理步骤

1.接收:从网络连接上读取输入数据。

2.解析:将请求报文解析为片段,将首部的各个部分放入易操作的数据结构中。

3.查找:缓存获取URL之后,查找本地副本

4.新鲜度检测:检查副本的新鲜度是否超过了新鲜度限值(一般为设置的新鲜度时间)。

5.创建响应:首先将缓存好的副本的首部作为响应的首部,再针对客户端,进行匹配性修改(修改为客户端要求的http版本的首部)

6.发送:将响应发送给客户端

7.日志:缓存存储一些缓存使用的日志。

缓存get请求的流程图

五、保持缓存新鲜度

1.http让原始服务器向每个文档添加首部如Cache-Control (文档的生存时间)首部或者 Empires(文档的过期时间)

Cache-Control:max-age=0;(服务器请求缓存不缓存请求)

Cache-Control:  s-maxage=0;(仅适用于公有缓存)

Cache-Control:must-revalidate(在没有跟原始服务器进行再验证的情况下,不能提供对象的旧副本)

Expires(不推荐)

服务器再验证:生存期可以任意使用这些副本,一旦过期就要与服务器核对。

                        如果内容变化,缓存获取新的副本。

                        如果没有变化,缓存获取新的首部。

2.条件方法再(?)验证

http允许缓存向服务器发送“条件GET”,服务器在文档与现有副本不同时返回对象体。

两个条件请求首部:

强弱验证器(允许对服务器对文档进行非实质性修改,不使缓存副本生效):

只要内容发生了变化,强验证器就会变化,弱验证器允许对部分内容进行修改,如果主要内容被修改了,弱验证器才会变化。

客户端使用实体标签还是最近修改日期取决于服务器

如果两个都有,两个都满足是才能返回304;

六、服务器对缓存的控制

Pragma:no-cache

Cache-Control:no-store

Cache-Control:no-cache

no-store:禁止缓存对响应进行复制

no-cache:本地缓冲区可以缓存响应,在进行新鲜度再验证之前,缓存不能将其提供给客户端使用。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值