HTTP缓存控制参数

上传人:碎****木 文档编号:220862224 上传时间:2021-12-09 格式:DOCX 页数:13 大小:72.54KB
返回 下载 相关 举报
HTTP缓存控制参数_第1页
第1页 / 共13页
HTTP缓存控制参数_第2页
第2页 / 共13页
HTTP缓存控制参数_第3页
第3页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《HTTP缓存控制参数》由会员分享,可在线阅读,更多相关《HTTP缓存控制参数(13页珍藏版)》请在金锄头文库上搜索。

1、万维网架构用超文本技术HTML 实现信息与信息的连接,用统一资源标志符URI 实现全球信息的准确定位,用应用层协议 实现分布式的信息共享。 超文本传输协议描述了W eb 客户端如何从Web效劳器恳求Web 页面,以及效劳器如何把 Web 页面传送给客户的过程和相关消息。一个 恳求和响应的根本过程是当用户通过点击某个HTML 页面中的超链接或者直接在扫瞄器中输人网址来恳求一个Web 页面时,扫瞄器把该页面中各个对象的 恳求消息发送给服务器,效劳器收到恳求后,将这些对象包含在 响应消息中作为响应反响给效劳器。通常状况下 协议由TCP 传输协议承载,现网中大量 连接还需要经过TLS 或者SSL 层封

2、装,架构在SSL 层之上的 协议通常称为 S( Hypertext Transfer Protocol over Secure SocketLayer)协议。 扫瞄器首先发起建立与效劳器的TCP 连接,连接建立,客户端和效劳器的 进程就可以通过各自的套接字(Socket)来访问下层的TCP 进程。客户端可以通过套接字发送 清求消息也可以从自己的套接字接收 响应消息;效劳器从自己的套接字接收 恳求消息也可以往自己的套接字发送 响应消息。客户端或效劳器端 进程一旦把某个消息送入各自的套接字,这个消息就由 TCP 进程来把握发送。TCP 给 供给一个牢靠的数据传输效劳。 协议是一个无状态的协议,即客

3、户端向效劳器端发送出恳求时,效劳器并没有存储关于该客户端和恳求的任何状态信息。即便同个客户端在几秒钟内再次恳求同一个对象,效劳器也不会响应说自己刚刚给它发送了这个对象。相反,效劳器会重新发送这个对象,由于它并没有存储该客户端的任何状态信息,同一个客户端的屡次恳求之间没有任何关系。 协议是一个标准的恳求+响应”协议,即客户端与效劳器建立连接后,就向效劳器发送一个 恳求, 协议规定恳求消息中包含恳求方法,如猎取某个对象、删除某个对象,统一资源标识符操作对象的位置和名称, 协议版本以及其它相关信息。效劳器收到恳求消息后发送响应消息,响应消急中包含了 协议版本、成功或者错误的代码以及其它相关信息。 协

4、议定义了各种各样的缓存把握方法,缓存可以依据以下的根本原那么工作: 假设响应消息的头信息告知缓存不要保存副本, 缓存就不会缓存相应内容。假设恳求信息需要源效劳器认证或者涉及平安协议,相应的恳求内容也不会被缓存。假设缓存的内容含有以下信息,内容将会被认为是足够新的,因此不需要从源效劳器重新猎取内容1) 含有过期时间和寿命信息。并且此时内容仍没有过期。2) 缓存内容近期被用来供给过效劳,并且内容的最终更新时间相对于最近使用的时间较久。假设缓存的内容已经过期,缓存效劳器将向源效劳器发出验证恳求(通过ETag 头信息或者Lest-Modified 头信息),用于确定是否可以连续使用当前内容直接供给效劳

5、。在某些状况下(比方源效劳器从网络中断开了),缓存的内容在过期的状况下也可以直接供给效劳。假设在响应消息中不存在用于推断内容是否变化的验证值(ETag 头信息或者Last-Modified 头信息),并月也没有其他任何明显的新颖度信息,内容通常不会被缓存。以上原那么告知我们新颖度和验证是确定内容是否可直接供给效劳的最重要依据。假设缓存内容足够新颖,缓存的内容就能直接满足 访问的需求了;假设内容过期,而经源效劳器验证后觉察内容没有发生变化,缓存效劳器也会避开将内容从源效劳器重新传输一遍。一、常用把握缓存参数:(1) HTML META 标签和 头信息 HTML 文件的编写者会在文档的区域中加人描

6、述文档的各种属性,这些META 标签经常被用于标记文档可不行以被缓存或者标记多长时间后过期。META 标签使用很简洁,但是效率并不高,由于能够读懂这个标记的扫瞄器只有少数几种,同时由于中间缓存几乎完全不解析文档中的HTML 内容,所以也没有什么中间缓存(代理缓存和网关缓存)能读懂这个规章。假设要通过META 标签来把握页面不缓存,一般状况下会在Web 页面的区域中增加“Poagma: no-cache”的META 标记。(2) 使用Expires(过期时间)头信息来把握保鲜期,通常状况下,主要通过 头信息来指示缓存和把握内容是否缓存。这些把握信息在HTML 代码中是看不见的,一般由 Web 效

7、劳器自动生成,并在 消息中进展标识。Expires 方式是 把握缓存的根本手段,这个属性告知缓存相关内容在多长时间内是新颖的。过了这个时间,假设客户端向缓存恳求这个内容,缓存就会向源效劳器发送恳求,检查文档是否发生了变化。几乎全部的缓存效劳器都支持 Expires 方式。大局部 Web 效劳器设置Expires 方式有多种,最常用的是设置成一个确定的时间值, 比方将内容最终被修改的时间点加上一个特定的时间段(比方 1 个小时)所得到的时间值。Expires 头信息对于把握静态图片文件的缓存特别有用,由于这些图片修改很少,可以给它们设置一个特别长的过期时间,这样会使得你的网站访问速度格外快。Ex

8、pire,头信息属性值只能是 格式的日期时间,其他的都会被解析成当前时间“之前”,即表示此内容已经过期, 的日期时间必需是格林尼治时间(OMT),而不是本地时间。虽然过期属性格外有用,但它还是有些局限,首先是源效劳器的时间和中间缓存的时间必需是同步的。假设彼此不同步,那么会消灭应当缓存的内容提前过期了、或者已经过期的结果没有准时更新。其次是过期时间的设置也存在肯定的问题。假设设置的过期时间是一个固定的时间,而返回内容的时候没有更新下次过期的时间,那么之后所有访问恳求都需要重新发给源Web 效劳器,这样反而增加了效劳器的负载以及响应时间。(3) 验证在 NTTP 1.1 中对缓存提出了验证的概念

9、,验证的目的就是检验缓存内容是否可用。当中间缓存存在一个过期的缓存内容, 并且对应的访问恳求到达时,缓存应当首先向源效劳器或者其他保存有未过期的缓存效劳器恳求验证来确定本地的缓存内容是否可用。这个过程就是一个缓存消息的验证过程。 1.1 把这种验证后再打算是否返回消息内容的方式叫“有条件”的恳求返回方法,这样可以避开从源效劳器或其他缓存效劳器猎取整个内容的信息,从而削减网络流量。当源效劳器生成了一个完整的响应消息时,它会附带一个验证信息,中间缓存在缓存内容时可以保存这个验证信息,当缓存内容过期以后,中间缓存可以使用它生成一个“有条件”的恳求来向源效劳器恳求验证。而源效劳器或者在与源效劳器通信的

10、路径上的其他缓存效劳器(假设保存有未过期的内容) 在收到这样的恳求以后就可以将恳求中包含的验证信急与自己本地 的验证信息进展比较。假设两个验证信息相等,那么返回一个带有特定状态码(比方 304 Not Modified,表示内容未修改正)且消息主体内容为空的响应消息,在这种状况下就削减了网络流量;假设两个验证信息不相等就需要传输一个包含新内容的完整响应消息。(4) Cache-Control缓存把握 头信息,指定过期时间和验证是 1.1 的根本缓存机制,也是缓存的隐含指令。但是在某些状况下,效劳器或客户端可能需要给 缓存供给显式的指令。Cache-Control 响应头信息包括如下几项:max

11、-age 缓存内容保持新颖状态的最长时间。这个属性类似于过期时间,是基于恳求时间的相对时间间隔,而不是确定过期时间,单位是秒,即从恳求时间开头到过期时间之间的秒数。s-maxage 类似于 max-age 属性,它应用于共享缓存。public 此属性标记认证内容也可以被缓存,一般来说,经过 认证才能访问的内容是默认不能缓存的。no-cache 强制将每次访问恳求直接发送给源效劳器,而不经过中间缓存进展前面提到的验证。这对那些需要在源效劳器进展用户认证的应用格外有用,也适用于那些严格要求使用最新数据的应用。no-store 强制缓存在任何状况下都不要缓存任何内容。must-revalidate

12、告知缓存必需遵循源效劳器赐予的内容新颖度。由于 允许缓存在某些特定状况下返回过期数据,所以通过指定这个属性,源效劳器可以告知缓存,假设缓存内容处于过期状态,那么在对访问恳求进展响应前必需到源效劳器进展重新验证。proxy-revalidate, proxy-revalidate 和 must-revalidate 根本一样,只是它不能应用于非共享的代理缓存。它允许在客户端缓存中保存那些经过权限认证的响应消息(包含有“public”来保证它们可以被缓存),在缓存内容没有过期之前,遇到一样的访问恳求那么可以返回缓存的数据而无须经过源效劳器的验证,假设内容过期那么仍需经过效劳器重新验证。对于效劳于多

13、个用户的代理缓存来说,为了保证每个用户都是被授权的,仍需每次都去效劳器进展验证这样的授权响应同样需要使用public 指令来允许它们能够被缓存)。(5) Pragma 头信息,除了以上提到的几种典型缓存把握机制以外,还有一种使用Pragma 头信息的方式。Pragma 属于通用头,用来包含特定的执行指令。这些指令可以适应于客户端、代理、网关、源效劳器中的任何接收者,但是 协议中认为Pragma 指令规定的行为是可选的。当“Pragma: no-cache”消灭在恳求消息中时,即使缓存设备中缓存了此恳求响应所需的内容,也会直接将此恳求转发到源效劳器上。虽然在 1.1 中提到了通过Pragma 把

14、握缓存的方法,但这主要是为了向 1.0 兼容,由于支待 1.0 的缓存主要还是通过这种方法来把握内容缓存的。 1.1 中主要还是通过前面讲到的Cache-Control 头信息来把握缓存,所以协议要求当一个 1.1 的恳求从客户端发出时,既应当包含 Pragma 指令, 也应当包含Cache-control 的把握指令,这样恳求从客户端发给源效劳器的过程中,分别支持 1.1 和 1.0 的缓存设备都可以读懂指令的信息。假设发送恳求的客户端本身只支持 1.0,那么支持 1.1 的中间缓存在收到恳求消息后必需以Pragma 中的指令来把握缓存。很多人认为在 头信息中设置了“Pragma.:no-c

15、ache“后会让内容无法被缓存。但事实并非如此, 的标准并没有任何关于响应信息头Pragma 属性的说明,而争辩的都是恳求头信息的Pragma 属性,即头信息由扫瞄器发送给效劳器,实际上只有少数几种缓存效劳器会遵循恳求消息中的这个头信息。所以,在很多状况下,使用Pragma 属性不肯定管用。二、缓存内容更新机制一般来说,Web Cache 会遵循以下根本规章进展内容更新:(1) 假设 响应头信息告知Cache 不要缓存,那么Cache 就不会缓存相应内容。(2) 假设对某内容的恳求信息是需要认证或者平安加密的,Cache也不会缓存相应内容。(3)假设在 响应中没有ETag 或者Last-Modified 头信息, Cache 会认为缺乏直接的更新度信息。默认该内容不行缓存。4一个缓存的副本假设含有以下信息,Cache 会认为它是足够新的,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号