欢迎光临杨雨的个人博客站!

杨雨个人网站-杨雨个人博客-杨照佳

杨雨个人博客网站

关注互联网和搜索引擎的个人博客网站

首页 > WEB开发 > PHP >

赏识器缓存 Last-Modified / Etag / Expires / Cache-Control 详解

发布时间:2016-11-23  编辑:杨雨个人博客网站   点击:   

什么是赏识器缓存

赏识器缓存,又称 HTTP 缓存,指的是:当我们赏识网站的时辰,器存储会在当地存储一个副本,以便下次会见同个网址的时辰可以不再毗连处事器,直接行使当地的缓存。处事器端措施可以通过 HTTP Cache Headers 来节制缓存举动,减轻处事器的承担,收缩了相应时刻,明显得进步网站的机能。

HTTP Cache Headers

当处事器发出相应的时辰,可以通过两种方法来汇报客户端(赏识器)如那里理赏罚缓存:

第一种是 Expires,好比:


Expires: Thu, 10 Dec 2015 23:21:37 GMT

在这天期之前,客户端城市以为缓存是有用的,第二次哀求,赏识器不会毗连处事器,直接从当地缓存中读取,好比下图:

HTTP Cache

不外 Expires 有弱点,好比说,处事端和客户端的时刻配置也许差异,这就会使缓存的失效也许并不能准确的按处事器的预期举办。

第二种是 Cache-Control,好比:


Cache-Control: max-age=3600

这里声明的是一个相对的秒数,暗示以后刻起,3600秒内缓存都是有用的,这样就停止了处事端和客户端时刻纷歧致的题目。

可是 Cache-Control 是 HTTP1.1 才有的,不合用与 HTTP1.0,而 Expires 既合用于 HTTP1.0,也合用于 HTTP1.1,以是说在大大都环境下同时发送这两个头会是一个更好的选择,当客户端两种头都能理会的时辰,会优先行使 Cache-Control。

前提哀求

Last-Modified / If-Modified-Since

在赏识器第一次哀求某一个 URL 时,处事器端的返回状态会是200,内容是你哀求的资源,同时有一个 Last-Modified 的属性标志此文件在处事期端最后被修改的时刻,名目相同这样:


Last-Modified: Mon, 30 Nov 2015 23:21:37 GMT

赏识器第二次哀求此 URL 时,按照 HTTP 协议的划定,赏识器会向处事器传送 If-Modified-Since 报头,扣问该时刻之后文件是否有被修悔改:


If-Modified-Since: Mon, 30 Nov 2015 23:21:37 GMT

假如处事器端的资源没有变革,则自动返回 HTTP 304 (Not Changed)状态码,内容为空,这样就节减了传输数据量。当处事器端代码产生改变可能重启处事器时,则从头发出资源,返回和第一次哀求时相同。从而担保不向客户端一再发出资源,也担保当处事器有变革时,客户端可以或许获得最新的资源。

HTTP304

ETag / If-None-Match

HTTP 协议规格声名界说 ETag 为“被哀求变量的实体值”。 处事器单独认真判定暗号是什么及其寄义,并在 HTTP 相应头中将其传送到客户端,以下是处事器端返回的名目:


ETag: "d41d8cd98f00b204e9800998ecf8427e"

客户端的查询更新名目是这样的:


If-None-Match: W/"d41d8cd98f00b204e9800998ecf8427e"

假如ETag没改变,则返回状态304,内容为空,这也和Last-Modified一样。

怎样行使 Last-Modified 和 Etags 怎样辅佐进步机能?

开拓者会把 Last-Modified 和 ETags 哀求的 HTTP 报头一路行使,这样可操作客户端(譬喻赏识器)的缓存。由于处事器起首发生 Last-Modified/Etag 标志,处事器可在稍后行使它来判定页面是否已经被修改。本质上,客户端通过将该暗号传回处事器要求处事器验证其缓存是否逾期。

本文地址:http://itbyc.com/php/13004.html
转载请注明出处。
分享是一种快乐,也是一种美德:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
博客首页 | WEB开发 | 网站运营 | CMS使用教程 滇ICP备14002061号-1