Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何快速渲染带有大量标记的地图?_Ruby On Rails_Ruby_Json_Google Maps_Activerecord - Fatal编程技术网

Ruby on rails 如何快速渲染带有大量标记的地图?

Ruby on rails 如何快速渲染带有大量标记的地图?,ruby-on-rails,ruby,json,google-maps,activerecord,Ruby On Rails,Ruby,Json,Google Maps,Activerecord,所以,我有一张谷歌地图,上面有很多标记,有时是50万。我使用markerclusterer使其可读 但是将500k的结果处理成json文件以提供给GoogleMap需要花费很长时间 知道如何加快流程吗?有一些优化: 使用原始数据,而不是对象/模型。将数据从数据库映射到对象需要很多时间。您可以通过使用ActiveRecord::Base.connection.execute(sql)查询数据库来消除这种情况 适用于大型数据集。您可以缓存单个记录和记录组。有关缓存过期的一些好建议,请参阅。将它与一些

所以,我有一张谷歌地图,上面有很多标记,有时是50万。我使用markerclusterer使其可读

但是将500k的结果处理成json文件以提供给GoogleMap需要花费很长时间


知道如何加快流程吗?

有一些优化:

  • 使用原始数据,而不是对象/模型。将数据从数据库映射到对象需要很多时间。您可以通过使用
    ActiveRecord::Base.connection.execute(sql)
    查询数据库来消除这种情况
  • 适用于大型数据集。您可以缓存单个记录和记录组。有关缓存过期的一些好建议,请参阅。将它与一些内存缓存(如memcached)相结合,结果会快得多
  • 发送尽可能少的数据。对于500k记录,每条记录的每一个额外字节将导致半MB的额外流量。因此,与其完整、描述性的JSON,不如返回一个数组数组。示例:
  • 仅渲染当前边界内的标记。让我们假设500k记录。如果您将它们全部发送到客户端,那么将有500000*47bit~2.8MB的数据编码为string/JSON,这将大得多。因此,不要发送所有记录,而是等待GoogleMaps的
    idle
    事件,并仅从服务器加载当前边界内的记录/标记。请参阅评论中发布的链接Andrew
  • 当然,gzipHTTP响应

  • 我建议你更具体一点。你知道是什么让这个过程变慢了吗?活动记录查询?json数据?还是谷歌地图中的实际javascript呈现?