如何在使用AEM Search API时实现缓存

时间:2017-07-11 04:05:34

标签: cq5 aem

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

尝试使用选择器或设置请求属性(searchTerm和Tags),而不是创建Search Client实例并调用getResult方法,但它不会返回任何结果。

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

1 个答案:

答案 0 :(得分:2)

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

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

但是,如果你真的想要缓存搜索结果,你可以查看第三方解决方案,但我会在AEM的背景下强烈反对它,因为有更好的解决方案,如:

  • 将搜索内容卸载到专用发布商。您可以通过LB或调度员规则来完成。
  • 通过优化索引来优化搜索。请记住,索引不会访问您的存储库。
  • 最糟糕的情况是,如果你真的在努力与性能相媲美,那么请考虑AEM Solr集成,因为Solr具有良好的缓存。您也可以使用ElasticSearch或其他DB实现相同的功能。请注意,管道和TCO不是免费的。