http的缓存

[TOC]

1、缓存的分类

缓存分为服务端缓存和客户端缓存:

2、缓存的优点

3、缓存机制

a、相关概念
Public: 指示响应可被任何缓存区缓存。
Private: 指示资源只能缓存到私有缓存中。
no-cache: 指示请求或响应消息建议缓存,但还是缓存到了客户端,其于Last—Modified配合使用。
no-store: 所有内容都不会被缓存,用于防止重要的信息被无意的发布。
max-age: 指示缓存的过期时间。
min-fresh:指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale: 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
b、缓存策略

缓存策略可划分为缓存存储策略,缓存过期策略,缓存对比策略。

策略如下图所示:

image

4、带缓存的用户请求

用户第一次请求服务器流程图:

image

第二次请求服务器流程图:

image

试题分析

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: image/png
Last-Modified: Tue, 08 Nov 2016 06:59:00 GMT
Accept-Ranges: bytes
Date: Thu, 10 Nov 2016 02:48:50 GMT
Content-Length: 3534

存储策略:no-cache,允许存储到客户端 过期策略:no-cache,立即过期 对比策略:last-modified被带到服务器端用于判断返回200还是304

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: image/png
Last-Modified: Tue, 08 Nov 2016 06:59:00 GMT
Accept-Ranges: bytes
Date: Thu, 10 Nov 2016 02:48:50 GMT
Content-Length: 3534  

存储策略:private,允许部分存入私有缓存中 过期策略:未知名,默认去Date减去Last-Modified的时间段的10%作为过期时间; 对比策略:客户端请求服务器时,last-modified被带到服务器端用于判断返回200还是304

5、参考文档

http://blog.csdn.net/chelp/article/details/44457143 http://blog.csdn.net/bpingchang/article/details/51328941 http://www.tuicool.com/articles/zUZnUre