写给后端程序员的http缓存原理介绍

写给后端程序员的http缓存原理介绍

ID:27806173

大小:120.61 KB

页数:4页

时间:2018-12-06

写给后端程序员的http缓存原理介绍_第1页
写给后端程序员的http缓存原理介绍_第2页
写给后端程序员的http缓存原理介绍_第3页
写给后端程序员的http缓存原理介绍_第4页
资源描述:

《写给后端程序员的http缓存原理介绍》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、后端程序员的HTTP缓存原理介绍通过Internet获取资源既缓慢,成本又高。为此,Http协议里包含了控制缓存的部分,以使Http客户端可以缓存和重用以前获収的资源,从而优化性能,提升体验。虽然Http屮关于缓存控制的部分,随着协议演进,有一些变化。但我觉着,作为后端程序员,在开发Web服务时,只需要关注请求头If-None-Match、响应头ETag、响应头Cache-Control就足够To因为这三个Http头就可以满足你的需求,并且,当今绝大多数的浏览器,都支持这三个Http头。我们所要做的就是,确保每个服务器响应都提供正确的HTTP头指令,以指导浏览器何时可以缓存响

2、应以及可以缓存多久。缓存在哪儿?测览爲►-—代理亘—>啟踞库上图中有三个角色,浏览器、Web代理和服务器,如图所示Http缓存存在于浏览器和Web代理中。当然在服务器内部,也存在着各种缓存,但这已经不是本文要讨论的Http缓存了。所谓的Http缓存控制,就是一种约定,通过设置不同的响应头Cache-Control来控制浏览器和Web代理对缓存的使用策略,通过设置请求头If-None-Match和响应头ETag,來对缓存的有效性进行验证。响应头ETagETag全称EntityTag,用来标识一个资源。在具体的实现中,ETag可以是资源的hash值,也可以是一个内部维护的版本号。

3、但不管怎样,ETag应该能反映出资源内容的变化,这是Http缓存可以正常工作的基础。ConUnt-Length:1024Cacho-Control:max-age*120ETag:-x1323ddx**(data)—OeAfiln•EG如上例屮所展示的,服务器在返回响应时,通常会在Http头屮包含一些关于响应的元数据信息,其屮,ETag就是其中一个,本例中返回了值为x1323ddx的ETag。当资源/file的内容发生变化时,服务器应当返回不同的ETag。请求头If-None-Match对于同一个资源,比如上一例中的/file,在进行了一次请求之后,浏览器就已经有了/file

4、的一个版本的内容,和这个版本的ETag,当下次用户再需要这个资源,浏览器再次向服务器请求的时候,可以利用请求头If-None-Match来告诉服务器自己已经有个ETag为x1323ddx的/file,这样,如果服务器上的/file没有变化,也就是说服务器上的/file的ETag也是x1323ddx的话,服务器就不会再返回/file的内容,而是返回一个304的响应,告诉浏览器该资源没有变化,缓存有效。GET/filelf.None>Match:wx1323ddx"i304NotModifiedCache-Control:max-ages120ETag:-x1323ddxR服务器

5、如上例中所示,在使用了If-None-Match之后,服务器只需要很小的响应就可以达到相同的结果,从而优化了性能。响应头Cache-Control每个资源都可以通过Http头Cache-Control來定义自己的缓存策略,Cache-Control控制谁在什么条件下可以缓存响应以及可以缓存多久。最快的请求是不必与服务器进行通信的请求:通过响应的木地副木,我们可以避免所有的网络延迟以及数据传输的数据成本。为此,HTTP规范允许服务器返回一系列不同的Cache-Control指令,控制浏览器或者其他中继缓存如何缓存某个响应以及缓存多长时间。Cache-Control头在HTTP/

6、1.1规范中定义,取代了之前用来定义响应缓存策略的头(例如Expires)o当前的所有浏览器都支持Cache-Control,因此,使用它就够了。以下我来介绍可以再Cache-Control屮设置的常用指令。max-age该指令指定从当前请求开始,允许获取的响应被重用的最长时间(单位为秒。例如:Cache-Control:max-age=60表示响应可以再缓存和重用60秒。需要注意的是,在max-age指定的时间之内,浏览器不会向服务器发送任何请求,包括验证缓存是否有效的请求,也就是说,如果在这段时间之内,服务器上的资源发生了变化,那么浏览器将不能得到通知,而使用老版本的资源

7、。所以在设置缓存时间的长度时,需要慎重。public和private如果设置了public,表示该响应可以再浏览器或者任何中继的Web代理中缓存,public是默认值,即Cache-Control:max-age=60等同于Cache-Control:public,max-age=60o在服务器设置了private比如Cache-Control:private5max-age=60的情况下,表示只有用八的浏览器可以缓存private响应,不允许任何屮继Web代理对其进行缓存■例如,用户浏览器可以缓存包含

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。