优化网络服务用量

注意:Google Maps Platform 高级计划不再开放注册,也不再提供给新客户。

概览

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

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

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

准备工作

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

验证您的用例

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

请注意,使用网络服务时,您的高级计划许可存在每秒查询次数 (QPS) 限制,不论请求来自多少个 IP 地址,都是如此。

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

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

使用您的 Google Maps Platform 高级计划许可

确保您的应用请求中包含 Google Maps Platform 高级计划许可的正确身份验证详细信息,即 Google Cloud Console 中您的高级计划项目的客户端 ID 或 API 密钥。

如果您的应用未正确使用高级计划许可,则需遵循标准版方案的用量限额和 Google Maps Platform 服务条款中的许可限制。它将不在高级计划服务等级协议 (SLA) 的涵盖范围内。此外,您也不会针对该应用获得技术支持。

如何优化网络服务用量

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

缓存结果

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

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

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

限制请求数量

如要避免超出用量限额,您可以将应用配置为限制请求数量,具体方法是将请求置于可跟踪其发送时间的队列中。如果您的应用收到一个超出 QPS 限额的请求,它应检查第一个请求的时间戳,并等待 1 秒。

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

提高 QPS 限额

如果您正确实施限制,您的应用发送的请求应该不会超出用量限额。不过,您的应用可能会收到过大的输入或者比 Google Maps Platform 网络服务用量限额(通常为 50 QPS)所允许速度更快的输入。在这种情况下,限制队列的规模会变大,进而造成请求积压。此外,Places API 的初始限额为 50 QPS。如果您的应用在每天特定时间或者全天持续发生这样的积压,那么您可能需要为 Google Maps Platform 高级计划许可提高 QPS 限额。如要请求提高 QPS 限额,请与您的 Google Maps Platform 销售客户经理联系。