Оптимизация использования веб-служб

Обзор

Если ваше приложение превысит лимиты использования для веб-службы Google Maps APIs, она возвратит сообщение об ошибке. Если ваше приложение продолжит превышать лимиты использования, ему может быть заблокирован доступ к веб-службе и, в некоторых случаях, выданы в ответ сообщения "403 Forbidden".

Если на запросы вашего приложения к веб-службе приходят сообщения об ошибке, возможны следующие действия.

  1. Сокращение использования веб-служб путем оптимизации приложений.
  2. Увеличение лимитов использования, когда это возможно, путем приобретения дополнительных кредитов Maps API.

Перед началом работы

Перед оптимизацией использования веб-служб вашим приложением, убедитесь, что применяются подходящие для вашего случая служба и лицензия на Maps API.

Проверьте свой вариант использования

Службы Google Maps APIs лучше всего подходят для приложений, в которых не требуется пользовательский ввод в режиме реального времени или для случаев, когда не используется веб-браузер. В частности, вы должны пользоваться веб-службами, если ваше приложение использует набор данных, независимый от вводимой пользователем информации, например, фиксированный набор адресов на веб-сайте недвижимости, который необходимо геокодировать.

Обратите внимание, что при пользовании веб-службами лимит на число запросов в секунду (QPS) применяется к вашей лицензии на Premium Plan независимо от количества IP-адресов, с которых были отправлены эти запросы.

С другой стороны, службы на стороне клиента в составе Google Maps JavaScript API ограничены по частоте запросов на сеанс просмотра, поэтому общее число запросов распределяется между всеми пользователями и масштабируется по мере роста числа пользователей. Таким образом, службы на стороне клиента лучше всего подходят для тех приложений, которые геокодируют адреса, вводимые пользователями в режиме реального времени, например, для поиска магазинов, когда ищутся магазины вблизи домашнего адреса пользователя.

Более подробные рекомендации по использованию веб-служб см. в стратегиях геокодирования. Хотя рекомендации, приведенные в этом документе, относятся к геокодированию, они справедливы для всех веб-служб и объясняют, когда следует использовать веб-службы на стороне сервера, а когда их аналоги на стороне клиента.

Используйте свою лицензию на Google Maps APIs Premium Plan

Убедитесь, что запросы вашего приложения включают корректные реквизиты аутентификации вашей лицензии на Google Maps APIs Premium Plan – то есть, ваш идентификатор клиента или ключ API из вашего проекта Premium Plan в Google API Console.

Если ваше приложение некорректно использует лицензию на Premium Plan, на него распространяются ограничения стандартного плана и Условий использования, а также оно не охватывается договором об уровне обслуживания Premium Plan. Кроме того, вы не получите техническую поддержку для этого приложения.

Оптимизация использования веб-служб

Чтобы использовать веб-службы эффективнее, можно снизить число обращений к ним, отправляя запросы только тогда, когда это необходимо, а также равномерно распределять использование служб, чтобы оставаться в пределах лимитов.

Кэширование результатов

Пункт 10.5.d Условий использования Maps API говорит о том, что данные Google Maps можно временно кэшировать на период до 30 дней, чтобы улучшить производительность приложения. Кэширование ответов веб-службы позволяет приложению избежать отправки дублирующих запросов в течение короткого промежутка времени. Фактически, ответы веб-служб всегда содержат НТТР-заголовок Cache-Control, который указывает период, в течение которого можно хранить результат, например, Cache-Control: public, max-age=86400. Для обеспечения эффективности убедитесь, что ваше приложение всегда кэширует результаты хотя бы на тот период времени, который указан в этом заголовке, но не более, чем на максимальный период, указанный в Условиях использования Maps API.

Кэширование можно реализовать с помощью прокси-серверов, большинство из которых специально спроектированы для выполнения этой функции. Но можно использовать и собственную реализацию прокси-сервера. Обратите внимание, что некоторые клиентские библиотеки НТТР также кэшируют и ответы НТТР.

Чтобы увеличить частоту попаданий в кэше, нормализуйте координаты широты и долготы путем округления до 6 знаков после десятичного разделителя, что обеспечивает точность около 11 см на периметре экватора. Если добавить больше знаков после разделителя, результаты от веб-служб не изменятся, а частота попаданий в кэше сократится.

Регулирование запросов

Чтобы избежать превышения лимитов использования, можно настроить приложение, чтобы запросы задерживались и ставились в очередь, которая следит за тем, когда отправляются эти запросы. При получении приложением дополнительного запроса сверх лимита запросов в секунду, оно должно проверить временную метку первого запроса и подождать 1 секунду.

Даже с задержкой приложения по-прежнему могут получать ответы с кодом статуса OVER_QUERY_LIMIT. Настройте свое приложение, чтобы оно вставляло небольшую задержку (20 мс) и повторяло запрос, если получает такой ответ.

Увеличение лимита запросов в секунду

Если задержка применяется правильно, приложение не должно отправлять запросы сверх установленных лимитов. Тем не менее, приложение может получать входные данные, которые превышают по объему или скорости ввода те лимиты, которые разрешены для использования веб-службы (как правило, 50 запросов в секунду). В этом случае очереди запросов становятся большими, создавая скопления запросов. Кроме того, Places API Web Service первоначально ограничено 5 запросами в секунду. Если в вашем приложении постоянно возникает такое скопление запросов в какое-то определенное время или на протяжении дня, то может потребоваться увеличение лимитов числа запросов в секунду для вашей лицензии на Google Maps APIs Premium Plan. Чтобы запросить увеличение лимита числа запросов в секунду, свяжитесь со своим менеджером по работе с клиентами Google Maps APIs.