有很多方法可以解决这个问题,但我将在这里提出我认为最适合您的问题的两种方法。
首先是从您的网络应用程序中真正控制需要什么信息以及何时请求。您可以自己用 javascript 编写这一切并实现缓存技术等。不过,有许多图书馆可以为您完成大部分工作。我会推荐以下之一:
所有这些都有控制本地缓存、何时获取数据以及从服务器收集哪些数据的方法。它们中的大多数还可以扩展以添加缺少的任何功能。我知道的前两个也支持谷歌地图(以及其他一些)。
如果您需要在本地添加对数据的更多控制,您甚至可以考虑实现类似PouchDB的东西。我认为这更适合移动应用程序或网络连接非常慢或断断续续的实例。
这种解决方案应该能够轻松处理 1000 到 10000 的功能和 100 的用户。
如果您真的打算将 100000 到 1000000 的功能扩展到 100 到 1000 的用户,那么我建议在上面的解决方案中添加一个切片服务器。切片服务器将位于您的 Web 应用程序和数据库之间。他们中的大多数都有很多缓存设置和优化,用于处理大型数据集并将它们推送到客户端。因为它们推出的是瓦片而不是特征,所以即使特征数量增加,数据输出也保持相当恒定。我上面提到的 OpenGeo SDK 和 Openlayers 库可以很好地与以下任何瓦片服务器一起工作:
如果您不愿意进行任何编码,那么有一些针对企业环境的开箱即用的产品。它们都很贵,从你的问题来看,我认为它们可能不是你想要的。