我应该在浏览器内存中缓存多少数据?

时间:2010-07-19 16:21:36

标签: javascript ajax caching

我需要从REST服务加载几千条用户数据记录(准确地说是联系人管理系统中的用户联系人)并对它们进行搜索。不幸的是,REST服务不提供满足我需求的搜索,因此我只是简单地加载一堆数据并自己搜索。加载记录非常耗时,因此我只想为每个用户执行一次。

显然这些数据需要缓存。不幸的是,服务器端缓存不是一种选择。我的客户端在多个服务器上运行应用程序,并且无法预测给定请求将要到达哪个服务器。

因此,下一个选项是在浏览器端缓存此数据并在其上运行搜索。对于拥有数千个联系人的用户,这可能意味着缓存几个megs的数据。在浏览器内存中存储几个megs的javascript数据可能会遇到什么问题?

4 个答案:

答案 0 :(得分:4)

存储几个megs的Javascript数据应该没有问题。内存泄漏会。想想现代计算机有多少内存 - 几兆字节是众所周知的分子中的一个分子。

答案 1 :(得分:3)

如果您打算让用户使用移动设备,请在做任何客户端时小心。虽然桌面不会出现问题,但Mobile Safari将停止(我相信)10Mb的JavaScript数据。 (有关Mobile Safari的更多信息,请参阅this article)。其他移动浏览器可能具有类似的内存限制。找出可以返回以允许用户执行搜索的最小信息集,然后根据需要从REST API中延迟加载更丰富的记录。

作为替代方案,代理相关的REST服务,并在您随后控制的服务器上创建自己的搜索。您可以使用Python + Django + XML Models快速轻松地完成此操作。毫无疑问,无论你喜欢什么样的开发语言,都有同样简单的方法。 (在重新阅读时,我发现你不能进行服务器端缓存,这可能会使这一点变得没有意义)。

答案 2 :(得分:1)

您可以在浏览器中安全地管理数万条记录。我正在运行搜索&使用jOrder(http://github.com/danstocker/jorder)对这些数据集进行基准测试,没有问题。

答案 3 :(得分:1)

我会看一下分布式服务器端缓存。如果您将数据保留在浏览器中,随着系统的增长,您将不得不增加浏览器缓存生命周期以减少流量。