InstantSearch缓存策略

问题描述 投票:0回答:1

我想实现快速,流畅的搜索。搜索的项目不多:最多100个。每个项目都包含一个Facebook事件将保存的数据量。它们都将在初始负载下显示(可能是无限滚动)。数据不会经常更改。并发用户不超过100。

在上述条件下,搜索结果的最佳缓存策略是什么?

最可扩展的策略是什么?

Stack

  • 前端:Nuxt(VueJS)+ InstantSearch(没有阿尔及利亚!)
  • 后端:春季启动
  • Dockerized

可能的解决方案

  1. 后端上的额外缓存服务(例如reddis,memcached)+在每次搜索操作中将用户界面断开。基本上,这将使每个按键的后端垃圾邮件
  2. 将所有项目加载到本地存储区(例如Vuex),然后直接在此处搜索。这将增加应用程序的内存占用量,并且可能导致混乱的超时。
  3. 两者的结合?
vue.js vuex nuxt.js instantsearch.js vue-instant-search
1个回答
0
投票

缓存层绝对不会受伤。用户数量不应该成为问题。即使是AWS上最小的ec2实例也可以轻松处理。

您可以尝试在文本框中添加一点点延迟,以便不是每个击键都可以触发搜索,但可能会有50ms的回旋余地?请尝试看看在搜索栏中输入时的感觉。

对于100个项目,只要您不将静态图片之类的静态资产直接加载到Vuex中,Vuex也可以非常快。 JSON数据中约100个项目并不多-但如果您的应用突然有10000个项目,它也无法扩展。

最佳方案imo:

  • Redis缓存,因为很多请求将非常相似甚至完全相同。您只需要找到有关缓存有效时间的最佳选择]
  • 负载均衡后端和前端,即根据需要创建更多docker-image实例,以在CPU使用率超过特定阈值时处理请求中的潜在峰值
  • 如果您的后端不仅仅进行搜索,请将该搜索外包给专用实例,以免干扰“常规请求”
  • 非常重要:在数据库中创建索引以获得更快的搜索结果,请尽可能避免进行全面扫描!
  • [如果您的应用没有24/7流量,请考虑将其变为无服务器
© www.soinside.com 2019 - 2024. All rights reserved.