包括使用边缘一边
编辑该页面包括使用边缘一边
网关缓存是一个伟大的方式,让你的网站有更好的表现。但是他们有一个限制:他们只能缓存整个页面。如果你的页面包含动态部分,如用户名或一个购物车,你运气不好。这些情况下,幸运的是,Syob娱乐下载mfony提供了一个解决方案基于技术应急服务国际公司包括,或者边一边。Akamai写这个规范,2001年它允许页面的特定部分比主页有不同的缓存策略。
应急服务国际公司规范描述标签可以嵌入在页面缓存与网关进行通信。只有一个标记在Symfony中实现,ob娱乐下载包括
外,这是唯一有用的Akamai上下文:
1 2 3 4 5 6 7 8 9 10 11
< ! DOCTYPEhtml><html><身体>< !——……一些内容- - >< !——嵌入另一个页面的内容- - ><应急服务国际公司:包括src=“http://..”。/ >< !——……更多内容- - >< /身体>< /html>
请注意
注意的例子,每个ESI标记需要完全限定URL。一个ESI标记表示一个页面片段,可以通过给定的URL获取。
当请求处理时,网关缓存获取整个页面的缓存或从后端应用程序的请求。如果响应包含一个或多个ESI标签,这些都是用同样的方式处理。换句话说,网关缓存检索包括页面片段缓存的或从后端应用程序请求的页面片段了。当所有的ESI标签已经得到解决,网关缓存合并每个进入主页,将最后的内容发送给客户机。
所有这一切发生透明网关缓存级别(即以外的应用程序)。您将看到,如果你选择利用ESI标签,Symfony会包括他们几乎毫不费力的过程。ob娱乐下载
在Symfony中使用应急ob娱乐下载服务国际公司
首先,使用应急服务国际公司,一定要使它在应用程序中配置:
- YAML
- XML
- PHP
1 2 3 4
#配置/包/ framework.yaml框架:#……应急服务国际公司:真正的
现在,假设您有一个页面,是相对静态的,除了新闻股票底部的内容。欧宝平台是合法的吗应急服务国际公司,您可以缓存页面的其余部分的独立新闻播报欧宝平台是合法的吗:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / src /控制器/ DefaultController.php名称空间应用程序\控制器;/ /……类DefaultController扩展AbstractController{公共函数关于():响应{美元响应=美元这- >呈现(“静态/ about.html.twig”);美元响应- >setPublic ();美元响应- >setMaxAge (600年);返回美元响应;}}
在这个例子中,响应被标记为公共使整页缓存所有请求与一生的十分钟。接下来,包括新闻播报模板通过嵌入一个欧宝平台是合法的吗动作。这是通过的呈现()
助手(更多细节,请参阅如何将控制器嵌入到模板)。
作为嵌入式内容来自另一个页面(或控制器),Symfony使用标准ob娱乐下载渲染
辅助配置ESI标签:
1 2 3 4 5 6 7
{/静态/ about.html #模板。树枝#}{#你可以用一个控制器参考#}{{render_esi(控制器(“应用程序控制器\ \ \ \ NewsContro欧宝平台是合法的吗ller::最新的,{“maxPerPage”: 5}))}}{#……或URL #}{{render_esi (url (latest_欧宝平台是合法的吗news, {“maxPerPage”: 5}))}}
通过使用应急服务国际公司
渲染器(通过render_esi ()
树枝函数),你告诉Symfony行动应该呈现为一个ob娱乐下载ESI标签。你可能想知道为什么要使用一个辅助而不是自己写ESI标签。这是因为使用帮助使您的应用程序安装工作即使没有网关缓存。
提示
正如您将在下面看到的,maxPerPage
变量可以作为参数传递给你控制器(即。maxPerPage美元
)。变量通过render_esi
也成为缓存键的一部分,这样你有独特的缓存为每个变量和值的组合。
当使用默认呈现()
函数(或设置渲染器内联
),Sob娱乐下载ymfony将包括页面内容合并到主前发送响应给客户端。但是如果你使用应急服务国际公司
渲染器(即调用render_esi ()
)和如果Sob娱乐下载ymfony检测到与网关缓存支持应急服务国际公司,它生成一个应急服务国际公司包括标签。但如果没有网关缓存或如果它不支持ESI, Symfony会合并包括页面中的内容主要的一个,因为它会做如果你有使用ob娱乐下载呈现()
。
请注意
ob娱乐下载Symfony认为网关缓存支持包括ESI如果它的请求Surrogate-Capability
HTTP报头和标题包含的价值ESI / 1.0
字符串任何地方。
嵌入的行动现在可以指定自己的缓存规则完全独立于主页:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/ / src /控制器/ News欧宝平台是合法的吗Controller.php名称空间应用程序\控制器;/ /……类欧宝平台是合法的吗NewsController扩展AbstractController{公共函数最新的(int美元maxPerPage):响应{/ /设置公共和添加一些过期美元响应- >setSharedMaxAge (60);返回美元响应;}}
在这个例子中,嵌入的行动是缓存公开因为所有请求的内容都是一样的。然而,在其他情况下,您可能需要让这个响应非公有制甚至停机,这取决于您的需要。
一起把所有上面的代码,与应急服务国际公司完整的页面缓存将有效期为600秒,但是新闻组件缓存只会持续60秒。欧宝平台是合法的吗
当使用一个控制器参考,ESI标签应该引用嵌入的行动作为一个URL访问网关缓存可以取回它独立于页面的其余部分。ob娱乐下载Symfony负责生成惟一的URL为任何控制器参考和它能够正确路线它们由于FragmentListener在您的配置,必须启用:
- YAML
- XML
- PHP
1 2 3 4
#配置/包/ framework.yaml框架:#……片段:{路径:/ _fragment}
ESI渲染器的一个很大的优势是,您可以让您的应用程序根据需要动态的同时,达到应用程序尽可能少。
谨慎
片段侦听器只响应签名的请求。请求只有当使用片段渲染器和签署render_esi
树枝的功能。
的render_esi
辅助支持两种其他有用的选项:
-
alt
-
用作
alt
属性ESI标签,它允许您指定一个替代URL,如果使用src
不能被发现。 -
ignore_errors
-
如果设置为真,一个
onerror
属性将被添加到应急服务国际公司的价值继续
表明,在发生故障时,网关缓存将默默地删除ESI标签。