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

Примечание. Тарифный план Premium платформы Google Карт больше недоступен для регистрации и новых клиентов.

Обзор

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

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

  1. Сократить использования веб-сервисов, оптимизировав приложения.
  2. Увеличить лимиты на использования (при наличии такой возможности), приобретя дополнительные кредиты API Карт.

Подготовка

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

Убедитесь, что вы используете нужный сервис

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

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

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

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

Используйте лицензию платформы Google Карт с тарифным планом Premium

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

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

Как оптимизировать использование веб-сервиса

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

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

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

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

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

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

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

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

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

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