【发布时间】:2015-10-15 07:49:45
【问题描述】:
我知道有人问过这个问题,但大多数答案都是几年前的,而且并非全部都是针对 Ruby on Rails 项目的。在我当前的项目中,我正在使用 Geocode gem(通过 Ruby on Rails),任何人都可以按用户的位置搜索用户(我也使用 Carmen gem 来表示国家、次区域)。
无论如何,我最近收到了这个问题 (Google Geocoding API error: over query limit.)。阅读后,我发现这很常见。大多数解决方案似乎都涉及缓存,但其他人说它不太好/不好。
我想在这里向许多人提出这个问题,看看不同的人认为什么是好的解决方案。理想情况下,将 Geocoding gem 保留在项目中会很棒,但如果不值得,请告诉我一个替代方案。如果您知道此问题的解决方案,也请告诉我。
谢谢您,只是希望收到针对这种情况的反馈 =)
PS:我不使用 Google Maps API。该项目已设置,以便用户输入他们的信息(使用 Carmen gem)并输入 cit。该位置已进行地理编码,其他人可以输入城市、州/地区来查找该地区内的用户。
编辑
附加问题:当满足此限制时,是否还会导致用户注册时的经度和纬度值为零?由于它是限制,它不会对输入的位置进行地理编码,因此它将值保持为零?我以前也遇到过这种情况,所以我只想确定这就是为什么 =P
编辑 2 - 答案?
讲了一下(在下面的 cmets 中),似乎最好的选择是缓存信息。话虽如此,经过研究,我发现在使用 google 进行缓存时有很多合法性?同样,我不使用 Google Map API,所以法律方面可能不相关?
这是实现缓存的好方法吗 (https://github.com/codeforamerica/ohana-api/wiki/Customizing-the-geocoding-configuration)?
只是想确保我正确实现缓存方面 =P 谢谢!
乔
【问题讨论】:
-
您是否采取了地理编码器文档中的步骤?例如,仅当您进行地理编码的属性在您的模型上发生更改时才进行地理编码?这是在生产中吗?如果您在开发中遇到它,那可能是因为每次您运行测试时它都会发出请求。您还可以查看与它兼容的其他地理编码提供商,即 bing、yahoo 等
-
您使用的是免费 API 还是工作 API?请记住,免费 API 的限制为每天 2500 个请求以及每秒 5 个请求。
-
Japed:这个问题正在生产中发生。我是这样设置的,是的。只有在位置方面发生变化时才会对其进行地理编码。 Kobaltz:免费 API。我知道这个限制,我显然在这里达到了这个限制。只是想看看我必须有哪些选项才能没有这个问题。
-
那么基本上我认为您的选择是:付费、使用具有更高限制的其他提供商或缓存
-
一开始你仍然会遇到这个问题,但如果它在缓存中,Geocoder 将从缓存中获取信息,而不是从谷歌中获取信息,从而避免请求。因此,如果有人在您的网站上搜索 London,那么它会点击 google,然后缓存结果。所以下一个搜索伦敦的人会使用缓存,避免请求,而且几乎肯定会更快。
标签: ruby-on-rails ruby google-maps ruby-on-rails-4 caching