优化AEM站点性能
描述 description
环境
Adobe Experience Manager
问题/症状
本文重点介绍提高网站性能的方法。 我们重点指出了导致最多性能问题的Adobe Experience Manager (AEM)应用程序和体系结构的各个方面。 通过实施此处列出的优化方案,您可以避免这些常见问题。
解决方法 resolution
站点性能
客户端性能
-
使用和优化AEM客户端库 — 通过客户端库,可以轻松地集中管理并优化站点中的CSS和JavaScript代码。
-
将CSS包含的内容放在HTML标题标记中 — 这有助于避免页面在加载后出现闪烁和重绘问题。
-
将JavaScript脚本包含的内容放在body标记的末尾处,或者添加 异步脚本属性 — 这允许浏览器在渲染页面时并行加载JavaScript文件。
-
实施域名分片 — 默认情况下,Web浏览器会限制页面加载期间每个域的最大并行请求数。 如果您拥有许多资源(如CSS、JavaScript等),这可能会导致加载页面时出现延迟。 渲染页面之前需要加载的页面。 域名分片是一种有助于解决此问题的解决方案。 域名分片是指通过多个子域将CSS和JavaScript等文件包含到您的网站上。
-
例如:
code language-none script src="//includes1.yoursite.com/etc/clientlibs/test.js"/script
code language-none script src="//includes2.yoursite.com/etc/clientlibs/test2.js"/script
-
使用 ACS Commons — 静态引用重写器 以实施域名分片。
-
-
长时间缓存JavaScript和CSS — 要允许长时间缓存Javascript和CSS,请利用 ACS Commons — 受版本控制的Clientlibs.
-
请参阅 Google PageSpeed Rules文档 以获取有关如何优化站点的更多建议。
-
查看此 AEM Gems会话 有关站点优化的更多信息,
创作实例编辑性能
- 执行 定期维护.
- 减少页面上的组件总数 — 在一个创作实例中,当AEM页面上加载了数百个可编辑的组件时,会极大地影响编辑器UI的性能。 在设计应用程序时,请优先选用更加特定于站点且便于编辑人员使用的组件,而非含有大量子组件的通用型组件。
- 避免嵌套多级容器组件(段落系统、响应式网格、体验片段) — 避免嵌套多级容器组件。 嵌套段落系统或响应式网格会减慢/editor.html页面的加载速度。 当段落系统或响应式网格包含一长串内容时,这种情况会更加明显。 将应用程序设计为从其他页面引用内容,而不是嵌套段落系统。 如果您选择使用体验片段,那么也应当避免嵌套,或者利用 构建基块。 嵌套式体验片段同样存在上述性能限制。
缓存优化
在常见的AEM站点架构中,HTTP请求在最终到达AEM发布实例之前会经历多次缓存。 提高站点性能的最简单方法之一是优化站点的可缓存性。
请参阅 本文 有关如何优化站点中的缓存的详细步骤。
优化用于自定义JCR查询的索引
另一种可以改善性能的优化方案是为自定义JCR查询配置和优化Oak索引。 如果您在应用程序中使用JCR查询,这通常是必须完成的任务。
有关如何为自定义应用程序查询实施Oak索引的信息,请参阅官方文档(1和2)。:
QueryBuilder guessTotal
如果您使用AEM QueryBuilder并且希望查询返回大量结果,请始终确保在root PredicateGroup上设置guessTotal属性,因为这样可以减少内存使用。 有关详细信息,请参阅关于该主题的官方文档: 查询生成器API