如何在使用AEM搜索API时实施缓存



我们正在使用AEM 6.3,我们需要在项目中实现内容搜索功能。我们使用提供的搜索 API 实现它,但问题是搜索 API 仅接受请求参数,因此我们无法缓存搜索结果页面。

尝试使用选择器或设置请求属性(搜索词和标记(,而不是创建搜索客户端实例并调用getResult方法,但它不返回任何结果。

由于我们需要跨页面和mutilple属性进行内容搜索,因此我们可以在此处使用QueryBuilder API并获得与Search API相同的结果

搜索 API 性能很高,缓存不是使用搜索的最佳策略,因为您可能会得到过时的结果。实际上,您最终会缩短缓存寿命并最终遇到相同的问题。

您应该更多地考虑使用针对目标内容等的适当索引来优化搜索。

但是,如果您真的想缓存搜索结果,则可以研究第三方解决方案,但我强烈建议不要在AEM的上下文中使用它,因为有更好的解决方案,例如:

  • 将搜索卸载到专用发布商。您可以通过 LB 或调度程序规则执行此操作。
  • 通过优化索引来优化搜索。请记住,索引不会命中您的存储库。
  • 最坏的情况是,如果您真的在性能方面遇到困难,请查看AEM Solr集成,因为Solr具有良好的缓存。你也可以用ElasticSearch或其他数据库来实现同样的目标。请注意,管道和TCO不是免费的。

最新更新