0

我的应用程序显示了一个地图,其中位置(或标记)在每次地图边界更改后通过 ajax(和数据库)请求动态加载。

我确信这个解决方案是不可扩展的:目前,欧洲地区总共显示 10 个标记。
如果数据库增长并且我显示例如 1000 个位置,这意味着将向用户返回 1000 行。

这不是 JS / UI,因为我使用 MarkerCluster 插件并且避免重绘已加载位置的标记。

我做了一些调整:
- 由于 Idle gmaps 事件延迟了 Ajax 请求
- 增加了最小缩放级别,所以整个世界都无法显示。

但这还不够。

4

1 回答 1

1

有很多方法可以解决这个问题,但我将在这里提出我认为最适合您的问题的两种方法。

首先是从您的网络应用程序中真正控制需要什么信息以及何时请求。您可以自己用 javascript 编写这一切并实现缓存技术等。不过,有许多图书馆可以为您完成大部分工作。我会推荐以下之一:

所有这些都有控制本地缓存、何时获取数据以及从服务器收集哪些数据的方法。它们中的大多数还可以扩展以添加缺少的任何功能。我知道的前两个也支持谷歌地图(以及其他一些)。

如果您需要在本地添加对数据的更多控制,您甚至可以考虑实现类似PouchDB的东西。我认为这更适合移动应用程序或网络连接非常慢或断断续续的实例。

这种解决方案应该能够轻松处理 1000 到 10000 的功能和 100 的用户。

如果您真的打算将 100000 到 1000000 的功能扩展到 100 到 1000 的用户,那么我建议在上面的解决方案中添加一个切片服务器。切片服务器将位于您的 Web 应用程序和数据库之间。他们中的大多数都有很多缓存设置和优化,用于处理大型数据集并将它们推送到客户端。因为它们推出的是瓦片而不是特征,所以即使特征数量增加,数据输出也保持相当恒定。我上面提到的 OpenGeo SDK 和 Openlayers 库可以很好地与以下任何瓦片服务器一起工作:

如果您不愿意进行任何编码,那么有一些针对企业环境的开箱即用的产品。它们都很贵,从你的问题来看,我认为它们可能不是你想要的。

于 2013-10-23T02:43:41.287 回答