初识HTTP协议(六)

关于HTTP首部字段的一些介绍

(一).Cache-Control

 Cache-Control:从名字上看,这是缓存控制的意思,通过指定Cache-Control的指令,

就能操作缓存的工作机制。

缓存请求指令有很多个,这里只列我想说的几个(不好意思)

 1.

  no-cache,我第一次看的时候也以为是不缓存的意思,但实际上这个指令是不缓存过期的

 资源的意思。

  当客户端发送的请求中如果包含no-cache指令,则表示客户端不会接收缓存过的响应,于是位于

 ‘中间人’位置的缓存服务器就必须把请求转发给源服务器。

  当服务器返回的响应中包含no-cache指令,那么缓存服务器不能对资源进行缓存。那么既然

 不能对资源进行缓存,那么客户端以后进行请求时,缓存服务器也不用对源服务器进行资源的

 有效性进行判断。

  如果服务器返回的响应中,报文首部字段Cache-Control中对no-cache字段名具体制定数值,

 那么客户端在接收到响应报文后,就不能使用缓存了。

也就是说如果响应中的Cache-Control中的no-cache指令没有参数,就可以使用缓存,反之不行。

 2.

  no-store,这个指令才是真正的不进行缓存。

(二)之前的博客里面提到,因为缓存服务器的存在,我们减少了网络带宽的流量,当我们重新发送请求的时候不需要

在从服务器那里下载资源,可是这里面还存在一个问题,我们进行多次请求的时候,我们第一步不是直接就在缓存浏览器里面

拿资源,而是需要发送一个请求到服务器那里进行匹配。

原理:通过HTTP 请求头中的 If-Modified-Since(If-No-Match) 和响应头中的Last-Modified(ETag)来实现,HTTP请求把 If-Modified-Since(If-No-Match)传给服务器,服务器将其与Last-Modified(ETag)对比,若相同,则文件没有被改动过,则返回304,直接浏览器缓存中读取资源即可。

所以如果我们想要不用请求而是直接在缓存服务器里面获取资源,这个时候就利用到Cache-Control了,

Cache-Control中的指令:max-age,这个指令表示在你访问某一个网页后的多少秒内不需要从服务器那里请求了,而是直接获取资源。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值