上次写完了请求头,这次写写响应头吧。等写完了之后,单独在对浏览器缓存策略写写吧。
Accept-Ranges: 标识自身支持范围请求(partial requests)。字段的具体值用于定义范围请求的单位。
有none和bytes两个值。
Age:一个非负整数,表示消息对象在缓存代理服务器中存贮的时长,以秒为单位。
Cache-Control:被用于在http请求和响应中,通过指定指令来实现缓存机制。
缓存指令是单向的,这意味着在请求中设置的指令,不一定被包含在响应中。有可能在请求头也会有。
这个指令分为四种:可缓存性,到期,重新验证和重新加载,其他。
可缓存性:public,private,
no-cache:在发布缓存副本之前,强制要求缓存把请求提交给原始服务器进行验证;缓存前要向服务器确认资源是否被更改。
no-store:缓存不应存储有关客户端请求或服务器响应的任何内容。
到期:max-age:这是相对请求时间
Etag:一个对本地浏览器缓存版本的标识。HTTP1.1中才加入的一个属性。
HTTP响应头是资源的特定版本的标识符。这可以让缓存更高效,并节省带宽,因为如果内容没有改变,Web服务器不需要发送完整的响应。而如果内容发生了变化,使用ETag有助于防止资源的同时更新相互覆盖(“空中碰撞”)。
首次请求的时候会返回200外加etag标识,之后请求会返回304并带着if-none-match字段来配合服务器的缓存检验。
Last-modified:
200的时候,用来服务器说明响应修改的最后的时间,304 的时候会变成if-last-modified,它会与server 上的资源修改时间作对比,来判断要不要请求新的资源。
其中包含源头服务器认定的资源做出修改的日期及时间。 它通常被用作一个验证器来判断接收到的或者存储的资源是否彼此一致。由于精确度比 etag
要低,所以这是一个备用机制。包含 if-modified-since
首部的条件请求会使用这个字段。
Server: 首部包含了处理请求的源头服务器所用到的软件相关信息.
Vary:
它决定了对于未来的一个请求头,应该用一个缓存的回复(response)还是向源服务器请求一个新的回复。它被服务器用来表明在(内容协商算法)中选择一个资源代表的时候应该使用哪些头部信息(headers)。
具体来说是配合浏览器的协商缓存使用的字段。
响应头里包含最重要的知识点:浏览器的缓存策略。
缓存分为两种,强缓存和协商缓存。
强缓存根据expires 和 cache-control
协商缓存来根据 etags (if-none-match) 和 last-modified (if-last-modified)搭配使用。