最佳化 Web 服務使用量

總覽

如果您的應用程式超過 Google Maps APIs Web 服務的使用限制,服務會傳回錯誤訊息。如果應用程式持續超過該使用限制,可能會遭封鎖而無法存取 Web 服務,在某些情況下還會收到「403 Forbidden」回應。

如果應用程式的 Web 服務要求收到錯誤訊息,您可以進行下列步驟:

  1. 最佳化應用程式來更有效率地使用 Web 服務,藉此降低使用量。
  2. 可能的話,購買額外 Maps APIs Credits 來提升使用上限。

在開始之前

在最佳化應用程式的 Web 服務使用方式前,請確認您已為使用案例使用正確的服務及 Maps API 授權。

驗證您的使用案例

Google Maps APIs Web 服務最適用於不需使用者進行即時輸入的應用程式,或不使用網路瀏覽器的情形。例如,若您的應用程式使用不依靠使用者輸入的資料集(例如房地產網站上需要進行地理編碼的固定地址),就應該使用 Web 服務。

請注意,在 Web 服務中,每秒查詢數 (QPS) 限制會套用至 Premium Plan 授權,無論有多少個要求來源 IP 位址。

另一方面,Google Maps JavaScript API 提供的用戶端服務是限制每個瀏覽器工作階段的速率,所以要求會分散在所有使用者間,且隨著使用者數量增長而增加。因此,用戶端服務最適用於即時為使用者輸入的地址進行地理編碼的應用程式,例如在使用者的住家地址附近搜尋店舖的店舖尋找程式。

如需何時該使用 Web 服務的詳細說明,請參閱地理編碼策略。雖然此文件是針對地理編碼,但其中的建議可套用至所有 Web 服務,說明何時應使用伺服器端 Web 服務或用戶端 Web 服務。

使用 Google Maps APIs Premium Plan 授權

應用程式的要求中務必包含正確的 Google Maps APIs Premium Plan 授權之驗證詳細資料,也就是 Google API Console 的 Premium Plan 專案中的用戶端編號或 API 金鑰。

如果應用程式未正確使用 Premium Plan 授權,會受到標準方案使用限制和服務條款限制規範,而不受 Premium Plan SLA 保障。此外,您將無法為應用程式取得技術支援。

如何最佳化 Web 服務使用量

若要更有效率地使用 Web 服務,您可以僅在必要時傳送要求,並平均分散使用量以控制在限制內,藉此降低使用量。

快取結果

Maps API 服務條款第 10.5.d 節指出,您可以暫時快取 Google Maps 資料,並最長保存 30 天,以提升應用程式效能。透過快取 Web 服務回應,可以避免應用程式在短時間內傳送重複要求。事實上,Web 服務回應總是包含 Cache-Control HTTP 標頭,指出您能快取結果的期間,例如 Cache-Control: public, max-age=86400。基於效率考量,請確保應用程式總是會快取結果並至少保存此標頭中指定的時間,但不要超過 Maps API 服務條款指出的最長時間。

您可以使用網路 Proxy(大多可立即執行此功能)來實作快取。或者,您也可以使用自己的網路 Proxy 實作。請注意,部分 HTTP 用戶端程式庫也會快取 HTTP 回應。

若要提高在快取中找到所需資料的機率,請務必四捨五入到小數點後 6 位數(可在赤道附近提供約 11 公分的精確度),以標準化緯度/經度 (lat/long) 座標。如果您增加更多小數位數,Web 服務結果不會變更,但會降低在快取中找到所需資料的機率。

對要求進行節流處理

若要避免超過使用限制,您可以設定應用程式來針對要求進行節流處理,將要求排入佇列,掌握傳送要求的時間。如果應用程式接到超出 QPS 限制的額外要求,它會檢查第一個要求的時間戳記,並等候 1 秒鐘。

即便使用節流處理,應用程式仍可能接到狀態碼為 OVER_QUERY_LIMIT 的回應。如果收到這類回應,請設定應用程式來插入短暫延遲(20 毫秒)並再試一次。

提高 QPS 上限

如果您正確地實作節流處理,應用程式傳送的要求應該不會超過使用限制。然而,應用程式可能會接到過大的輸入,或是速度比 Web 服務使用限制所允許的速度(一般為 50 QPS)還快的輸入。在這種情況下,受到節流處理的佇列可能變得很長,使要求不斷積存。此外,Places API Web Service 一開始的限制為 5 QPS。如果應用程式持續接到這種積存,無論是一天當中的特定時間或一整天,您可能需要為 Google Maps APIs Premium Plan 授權提高 QPS 上限。要提出提高 QPS 的要求,請聯絡您的 Google Maps APIs 業務經理。