AEM查找用例-设计讨论



用例

  1. 我有一个Excel在DAM包含预定义的10列。
  2. 行从3000到10000不等。没有PI SPI数据涉及今天或未来。
  3. 我们需要在最终用户输入搜索词匹配excel列a的页面上显示结果
  4. 它可以更复杂,如-给我那些行,其中用户输入存在于列A + C + d
  5. 这种搜索方式与典型的"搜索"在AEM -优化搜索API,索引等

Design-1

  1. 有一个查找组件
  2. 将基于资源的servlet绑定到组件资源。
  3. 读取整个excel服务器端(servlet)并生成JSON。
  4. 在dispatcher上缓存整个JSON
  5. 对于每个即将到来的请求,JSOn从缓存中提供,并在excel数据发布中无效。
  6. 让客户端拥有完整的JSON并实现搜索逻辑以显示相关结果。

优点-优化和高效-服务器上的点击率较低,整个数据(这不是巨大的)被加载到内存DOM中,以便快速直观地返回搜索结果。

缺点-搜索逻辑是业务逻辑,是在客户端实现的。在未来,如果有一个用例,做一些像JCR查找在excel中匹配的值,那么它必须为整个数据集做JSON返回所有这样的字段。

in - memory DOM如何知道数据在后端被刷新了?在发布时,调度程序将使JSON响应无效,但是浏览器DOM如何知道并更新自己呢?

设计2

  1. 有一个查找组件
  2. 将基于资源的servlet绑定到组件资源。
  3. 读取整个excel服务器端(servlet),实现搜索逻辑并生成结果JSON
  4. 在dispatcher上,JSON被缓存,选择器作为搜索词。
  5. 如果相同的请求有相同的搜索词,那么只有缓存的结果将被传递,否则请求将击中服务器(AEM Publisher)。
  6. 前端JS只获取JSON的搜索结果,并简单地显示它。

优点—搜索逻辑是业务逻辑,在服务器端实现。更安全的。数据转换逻辑驻留在服务器端。透视数据量不大

缺点-效率较低-服务器上更多的点击(缓存包含json与搜索词作为选择器-所以搜索词需要匹配json从缓存返回),每次搜索页面刷新。

你更喜欢哪种设计?或者你有没有其他更好的设计?

我会选择选项a。解析Excel文件是昂贵的,可能会增加1-2秒的延迟(无论你要使用哪种Java电子表格API: Apache POI等)。

10K行不是很多,可以在客户端加载。

in - memory DOM如何知道数据已在后端刷新?在发布时,调度程序将使JSON响应无效,但是浏览器DOM如何知道并更新自己呢?

这取决于你的实现。您可以在每次用户搜索时获取电子表格JSON,也可以只获取一次并缓存到DOM中。对于后一种情况,在刷新之前数据将是实时的。

相关内容

  • 没有找到相关文章

最新更新