Edge 端包括
2024年9月27日
- 主题:
- Dispatcher
创建对象:
- 管理员
内容交付速度得益于积极缓存页面,通过设置具有高生存时间(TTL)值的缓存标头来实现。 当页面包含动态内容时,这可能具有挑战性,动态内容需要经常刷新或可能根本无法缓存。 幸运的是,有些策略可以使用高的TTL来缓存包含的HTML页面,从而将获取更多动态内容片段的过程推迟到以后(通过客户端Javascript或CDN)。 后一种方法是名为Edge Side Include (ESI)的标准,随AEM发布呈现的网站支持此标准。 该HTML包括ESI标记,指示CDN将页面的服务延迟到浏览器评估这些标记之前,从源检索额外的更动态(更低的TTL)内容(如果其TTL未过期,则为CDN缓存)。
Edge Side Includes的一些用例可能很有用:
- 显示最终用户的名称或最终用户特有的其他信息。
- 显示最近信息的列表,如新闻文章或股价。
ESI语法
如果父页面/content/page.html
包含代码片段content/snippets/mysnippet.html
,则ESI语法如下所示。
<html>
<head>
<title>My Site</title>
</head>
<body>
<div id="content">
<esi:include src="/content/snippets/mysnippet.html" />
</div>
</body>
</html>
有关详细信息,请参阅ESI规范。
注意事项
- 支持以下ESI标记: include、comment、remove。
- ESI标记在CDN中按顺序处理而不是同时处理,因此,具有低TTL的页面上的许多ESI标记可能会增加最终用户体验的延迟。
- ESI:包含处理的最大深度为5。
- 最大ESI:包括处理片段数为256。
Apache配置
如果您的页面具有ESI标记,则应当在Apache配置中声明以下属性:
<LocationMatch "/parent-pages/*content/page.html">
# disable dispatcher compression
SetEnv no-gzip 1
# enable esi processing
Header set x-aem-esi "on"
# enable edgeCDN compression
Header set x-aem-compress "on"
# typically the main page is cached at the CDN
Header always set Cache-Control "max-age=300"
</LocationMatch>
<LocationMatch "/content/snippets/mysnippet.html">
SetEnv no-gzip 1
# typically the included page is either set to a lower TTL than the parent page, or not cached at all, as these 2 commented declarations show, respectively:
#Header always set Cache-Control "no-cache"
#Header always set Cache-Control "max-age=50"
</LocationMatch>
配置的属性具有以下行为:
属性
行为
no-gzip
如果设置为1,则会将HTML页面从Apache未压缩地传输到CDN。 这对于ESI是必需的,因为内容必须未压缩地发送到CDN,以便CDN可以查看和评估ESI标记。
父页面和包含的代码段都应将no-gzip设置为1。
根据请求的
父页面和包含的代码段都应将no-gzip设置为1。
根据请求的
Accept-Encoding
值,此设置将覆盖Apache在其他情况下可能使用的任何压缩设置。x-aem-esi
如果设置为“开”,CDN将评估父HTML页面的ESI标记。 默认情况下,未设置标头。
x-aem-compress
如果设置为“开”,则CDN会将内容从CDN压缩到浏览器。 由于从Apache到CDN的父页面传输必须解压缩才能使ESI正常工作(
如果未设置此标头,则当CDN从未压缩的源检索内容时,它也会将内容未压缩地提供给客户端。 因此,如果将
no-gzip
设置为1),因此这可以降低延迟。如果未设置此标头,则当CDN从未压缩的源检索内容时,它也会将内容未压缩地提供给客户端。 因此,如果将
no-gzip
设置为1(ESI必需),则必须设置此标头,并且需要向浏览器提供从CDN压缩的内容。Sling Dynamic 包括
虽然不是必需的,但Sling Dynamic Include (SDI)可用于生成在CDN上解释的ESI代码片段。
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab