优化AEM站点性能

描述 description

环境
Adobe Experience Manager

问题/症状
本文重点介绍提高网站性能的方法。 我们重点指出了导致最多性能问题的Adobe Experience Manager (AEM)应用程序和体系结构的各个方面。 通过实施此处列出的优化方案,您可以避免这些常见问题。

解决方法 resolution

站点性能

  1. 执行 定期维护。
  2. 让后端服务调用具备容错性 — 请参阅 本文 以了解详细信息。
  3. 谨慎使用第三方UI框架 — 我们看到有许多客户通过使用或构建多个库,在AEM/Sling Web框架上生成了一个完整的层。 请注意,我们这里说的框架是指可以从根本上改变您在AEM上实施应用程序的方式,而不是用于在UI中实现特定功能的实用程序(例如ACS Commons)。 虽然这些框架可能会略微缩短开发时间,但我们已经看到,很多时候它们会对性能产生负面影响。
    Adobe不支持第三方框架,也不对其进行测试。 在使用或实施此类框架时,请确保使用真实的流量对应用程序进行彻底的加载和压力测试。

客户端性能

  • 使用和优化AEM客户端库 — 通过客户端库,可以轻松地集中管理并优化站点中的CSS和JavaScript代码。

    • 嵌入 客户端库,以将其整合到较少的文件中。
    • Minify 图书馆。
  • 将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会话 有关站点优化的更多信息,

创作实例编辑性能

  1. 执行 定期维护.
  2. 减少页面上的组件总数 — 在一个创作实例中,当AEM页面上加载了数百个可编辑的组件时,会极大地影响编辑器UI的性能。 在设计应用程序时,请优先选用更加特定于站点且便于编辑人员使用的组件,而非含有大量子组件的通用型组件。
  3. 避免嵌套多级容器组件(段落系统、响应式网格、体验片段) — 避免嵌套多级容器组件。 嵌套段落系统或响应式网格会减慢/editor.html页面的加载速度。 当段落系统或响应式网格包含一长串内容时,这种情况会更加明显。 将应用程序设计为从其他页面引用内容,而不是嵌套段落系统。 如果您选择使用体验片段,那么也应当避免嵌套,或者利用 构建基块。 嵌套式体验片段同样存在上述性能限制。

缓存优化

在常见的AEM站点架构中,HTTP请求在最终到达AEM发布实例之前会经历多次缓存。 提高站点性能的最简单方法之一是优化站点的可缓存性。

请参阅 本文 有关如何优化站点中的缓存的详细步骤。

优化用于自定义JCR查询的索引

另一种可以改善性能的优化方案是为自定义JCR查询配置和优化Oak索引。 如果您在应用程序中使用JCR查询,这通常是必须完成的任务。

有关如何为自定义应用程序查询实施Oak索引的信息,请参阅官方文档(1和2)。:

QueryBuilder guessTotal

如果您使用AEM QueryBuilder并且希望查询返回大量结果,请始终确保在root PredicateGroup上设置guessTotal属性,因为这样可以减少内存使用。 有关详细信息,请参阅关于该主题的官方文档: 查询生成器API

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f