我正在开发一个小型搜索引擎,试图找出如何缓存查询结果。这些结果是简单的 JSON 文本,使用 ajax 请求检索。
将结果存储在内存中不是一个选项,我可以看到剩下的两个选项:
- 使用 nosql 数据库检索缓存的结果。
- 将结果存储在 CDN 上并重定向 http 请求(307 - 临时重定向),以防结果已被缓存。
但是,我对 CDN 没有太多经验,想知道将它用于大量临时小文本文件是否是一种好习惯。在 ajax 请求上使用重定向是一个好习惯吗?CDN 是缓存小文本文件的合适解决方案吗?
我正在开发一个小型搜索引擎,试图找出如何缓存查询结果。这些结果是简单的 JSON 文本,使用 ajax 请求检索。
将结果存储在内存中不是一个选项,我可以看到剩下的两个选项:
但是,我对 CDN 没有太多经验,想知道将它用于大量临时小文本文件是否是一种好习惯。在 ajax 请求上使用重定向是一个好习惯吗?CDN 是缓存小文本文件的合适解决方案吗?
简短的回答:没有。
Long:通常,您将 CDN 用于大型静态文件,您希望 CDN 在世界各地进行镜像,以便在用户请求它们时靠近用户。当您有大量更改的数据时,将更改传播到 CDN 的所有节点总是需要一段时间,同时用户会得到不一致的结果(这可能对您来说很重要,也可能不重要)。
此外,为了避免更高的延迟,我不会使用 HTTP 重定向(您告诉客户端向其他地方发出第二个请求),而是确定是从缓存还是从您端的引擎获取数据(例如使用缓存代理或负载平衡器),然后将其直接提供给客户端。