优化网络服务使用

概览

如果您的应用超出 Google Maps APIs 网络服务的使用限制,服务将返回错误消息。如果您的应用持续超出使用限制,系统可能阻止它访问网络服务,在某些情况下,您的应用会接收到“403 (Forbidden)”响应。

如果您应用的网络服务请求接收到错误消息,您可以执行以下操作:

  1. 优化应用以更加高效地使用网络服务,从而降低使用量。
  2. 如果可能,通过购买更多 Maps API 配额来提高使用限制。

开始前的准备工作

在优化您应用的网络服务使用之前,请检查您是否为用例使用了正确的服务,以及使用的 Maps API 许可是否正确。

验证您的用例

Google Maps APIs 网络服务最适合不需要用户实时输入或不使用网络浏览器的应用。例如,如果您的应用使用不需要用户输入的数据集(例如,房地产网站上需要进行地理编码的一组固定地址),您应使用网络服务。

请注意,使用网络服务时,您的Premium Plan许可存在每秒查询数 (QPS) 限制,与发出请求的 IP 地址数量无关。

另一方面,Google Maps JavaScript API 提供的客户端服务按浏览器会话设定使用率限制,请求散布于所有用户中,并随着用户数量的增长而扩展。因此,客户端服务最适合需要用户实时输入地理编码地址的应用,例如,可以搜索用户家庭住址附近商店的商店定位器。

如需了解何时使用网络服务的更详细讨论,请参阅地理编码策略。尽管本文档针对地理编码特别编纂,但其中的建议适用于所有网络服务,说明了何时应使用服务器端网络服务以及何时应使用客户端网络服务。

使用您的 Google Maps APIs Premium Plan许可

确保您的应用请求包含您的 Google Maps APIs Premium Plan许可的正确身份验证详情 - 即,Google API Console 中您的Premium Plan项目的客户端 ID 或 API 密钥。

如果您的应用未正确使用 Premium Plan许可,将适用标准计划使用限制和服务条款限制,并且不在Premium Plan SLA 涵盖范围内。此外,您也不会获得应用的技术支持。

如何优化网络服务使用

为了更高效地使用网络服务,您可以通过下面两种方式降低使用量:仅在确实需要时发送请求和均衡使用以使其不超过限制。

缓存结果

Maps API 服务条款第 10.5.d 条指定您可以暂时(最多 30 天)缓存 Google 地图数据,以提高您的应用性能。通过缓存网络服务响应,您的应用可以避免在短时间内发送重复请求。实际上,网络服务响应始终包含 Cache-Control HTTP 标头,该标头指示了您可以缓存结果的时长 - 例如,Cache-Control: public, max-age=86400。为了提高效率,请确保您的应用至少在此标头中指定的时间内始终缓存结果,但不要超过 Maps API 服务条款中指定的最长时间。

您可以使用网络代理实现缓存,大多数网络服务都可以立即执行此功能。或者,您也可以使用自己的网络代理实现。请注意,部分 HTTP 客户端内容库也可以缓存 HTTP 响应。

要提高缓存命中率,您应通过四舍五入为 6 位小数的方式将纬度/经度坐标标准化,这样可以提供围绕赤道约 11 厘米的精度。如果您添加更多小数位,网络服务的结果不会发生变化,但缓存命中率将降低。

对请求数量进行限制

要避免超出使用限制,您可以配置您的应用,通过将请求置于可以跟踪其发送时间的队列中来调节请求。如果您的应用接收到超出 QPS 限制的一个附加请求,应用会检查第一个请求的时间戳,然后等待 1 秒。

即使进行调节,应用可能仍会接收到状态代码为 OVER_QUERY_LIMIT 的响应。配置您的应用以插入短暂延迟(20 毫秒),如果应用接收到这样的响应,请再试一次。

提高 QPS 限制

如果您正确实施调节,您的应用将不会发送超出使用限制的请求。不过,您的应用可能会接收到过大或者比网络服务使用限制(通常为 50 QPS)所允许速度更快的输入。这种情况下,调节队列将会变大,造成请求积压。而且,Places API Web Service 最初限制为 5 QPS。如果您的应用在每天特定时间或者全天持续接收到这样的积压,您需要为 Google Maps APIs Premium Plan许可提高 QPS 限制。要请求提高 QPS,请联系您的 Google Maps APIs 销售客户经理。