您的位置:首页 > 理论基础 > 计算机网络

《HTTP权威指南》 – 11.验证码和新鲜度

2015-12-10 17:58 609 查看
服务器应当告知客户端能够将内容缓存多长时间,在这个时间内就是新鲜的。服务器可以用这两个首部之一来提供信息:



Expires(过期)

Cache - Control(缓存控制)


Expires首部 规定文档“过期”的具体时间:

语法:Expires :Sun Mar 18 23 :59:59 GMT 2001。

Cache-Control 首部可以用秒数来规定文档最长使用期:从文档离开服务器之后算起的总计时间。

Cache-Control 首部的指令:



no - cache 请求:在重新向服务器验证之前,不要返回文档的缓存副本;

no - stroe 请求:不要返回文档的缓存副本,不要保存服务器的相应;

max - stble请求:文档允许过期,但不能超过指令中指定的过期指;

min - fresh请求:文档的使用期不能小于这个指定的时间与它的当前存活时间只和,也就是说:响应必须至少在指定的这段时间内保持新鲜;

max - age 请求:缓存中的文档不能超过指定的使用期;

no - transform请求:文档在发送之前不允许被转换;

only - if - cached请求:只有文档在缓存中才发送,不要联系原始服务器;





public 响应:响应可以被任何服务器缓存;

private 响应:响应可以被缓存,但只能被单个客户端访问;

no - cache 响应:如果该指令伴随一个首部列表的话,那么内容可以被缓存并提供给客户端,但必须先删除所列出的首部。如果没有指定首部,缓存中的副本在没有重新向服务器验证之前不能提供给客户端;

no - store 响应:响应不允许被缓存;

no - transform 响应:响应在提供给客户端之前不能做任何形式的修改;

must - revelidate 响应:响应在提供给客户端之前必须更新向服务器验证;

proxy - revelidate 响应:共享的缓存在提供给客户端之前必须重新向服务器验证,私有的缓存可以忽略;

max - age 响应:指定文档可以被缓存的时间以及新鲜度的最长时间;

s - max - age 响应:指定文档作为共享缓存时的最长使用时间,私有缓存可以忽略;


有条件的请求与验证码:

HTTP为客户端提供了一种方法,仅当资源改变时才请求副本,这种特殊请求成为有条件的请求。

例如:某个缓存服务器可能发送下面的有条件报文给服务器,仅当文件
/ hello.html
2002年6月29日
之后发生改变的情况下才发送它:

GET / hello.html HTTP / 1.0   If - Modified - Since : Sat : 29 Jan 2002 14:30:00 GMT;
有条件的请求通常是以 `If - ` 开头的首部来实现的。

有条件的请求类型:

If-Modified-Since  Last-Modified
如果在前一条响应的 Last-Modified 首部中说明的时间之后,资源的版本发生变化,就发送副本;

If-UnModified-Since  Last-Modified
仅在前一条响应的 Last-Modified 首部中说明的时间之后,资源的副本没有变化,才发送副本;

If-Match  ETag
如果实体的标记与前一次首部中的ETag相同,就发送该资源的副本;

If-None-Match  ETag
如果实体的标记与前一次响应首部中的ETag不同,就发送该资源的副本;


图灵图书 -- HTTP权威指南

豆瓣读书 -- HTTP权威指南

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: