首页 > 开发 > Php > 正文

Symfony2框架学习笔记之HTTP Cache用法详解

2020-02-21 20:47:26
字体:
来源:转载
供稿:网友

本文实例讲述了Symfony2框架HTTP Cache用法。分享给大家供大家参考,具体如下:

富web应用程序的本质意味着它们的动态。无论你的应用程序多么有效率,每个请求比起静态文件来说总会存在很多的耗费。对于大多数web程序来说,这没什么。 Symfony2非常的轻快,无论你做些严重超载的请求,每个请求将会得到很快的回复,而不会对你的服务器造成压力。但是随着你站点的成长,负载将成为一个严重的问题。对每个请求处理应该只被正常执行一次。这就是缓存真正要达成的目标。

站在巨人肩膀上的缓存:

提高一个应用程序执行效率的最有效方法是缓存一个页面的所有输出然后让后续的请求绕开整个应用程序。当然,这对于高动态性的站点来说并不是总是可能的。Symfony2 缓存系统是比较特别的,因为它依赖于在HTTP规范中定义的简单强大的HTTP cache。没有重新发明新的缓存方法,Symfony2 拥抱在web上定义基础交流的标准。一旦你理解了基础的HTTP校验和过期缓存模式,你就会完全掌握了Symfony2的缓存系统。

第一步:一个网关缓存(gateway cache),或者反向代理。是一个坐在你应用程序前面的对立的层。反向代理缓存来自于你应用程序的响应并使用这些缓存响应在某些请求到达你应用程序之前来回复它们。 Symfony2提供了自己的反向代理,也可以使用其它任何的反向代理。

第二步:HTTP缓存 (HTTP cache)头用于和网关缓存以及任何其位于客户和你的应用程序之间的其它缓存交流。Symfony2 提供了和缓存头交互的预设行为和强大接口。

第三步:HTTP 超时和校验时用于决定一个缓存内容是否新鲜和陈旧的两种模式。

第四步:ESI(Edge Side Includes)允许HTTP缓存被用于独立缓存页面片段(甚至是嵌套片段)。使用ESI,你甚至可以缓存一个完整的页面60分钟。但一个嵌入式边栏缓存只有5分钟。

使用网关缓存

当使用HTTP缓存时,缓存是跟你的应用程序完全分离的,它位于你的请求客户端和应用程序之间。该缓存的工作就是从客户端接收请求并把它们传递回你的应用程序。同时它也将接收从你的应用程序返回的响应并把它转给客户端。可以说它是你的应用程序和请求客户端之间请求-响应交互的中间人。

按照这个思路,缓存会保存被认为是“可缓存的”每一个响应回复。当同样的请求再次传来时,该缓存会把自己缓存的响应直接回复给请求客户端,而完全忽略你的应用程序。这种类型的缓存就是HTTP网关缓存。目前有很多这类缓存,比如Varnish,Squid in reverse proxy mode和Symfony2 反向代理等。

缓存类型

一个网关缓存不是缓存的唯一类型。事实上,有三种不同类型的缓存会截获并使用你的应用程序发出的HTTP缓存头。它们是:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表