Руководство по оптимизации

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

Безопасность

Следуйте рекомендациям по безопасности

Ключи API – это учетные данные, которые действуют в пределах проекта. Их нужно защищать так же тщательно, как идентификаторы пользователей и пароли. Иначе возникает риск несанкционированного использования ключей и, соответственно, квоты, которое может привести к переплате. Поэтому тщательно изучите рекомендации по обеспечению безопасности доступа к API и применяйте их в работе.

Используйте ключи API для доступа к Maps API

Ключи API являются предпочтительным способом аутентификации для доступа к Google Maps API. Доступ по идентификатору клиента по-прежнему поддерживается, однако ключи API позволяют точнее контролировать настройки безопасности. Так, действие ключа можно ограничить определенным веб-адресом, IP-адресом или мобильным SDK для Android или iOS. Подробные сведения о том, как создать и защитить ключи API для нужных API и SDK, например для Maps JavaScript API, можно найти на странице Использование ключа API.

Эффективность

Используйте экспоненциальную выдержку в случае ошибок

Если приложение слишком часто отправляет вызовы API (например, превышает квоту), это может приводить к ошибкам. В такой ситуации можно использовать экспоненциальную выдержку, чтобы система успевала обрабатывать запросы. Экспоненциальная выдержка лучше всего подходит для устранения ошибок с кодами 5хх.

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

Отправляйте запросы на взаимодействие с пользователем, только если тот выполнил нужное действие

Если запрос к API предусматривает взаимодействие с конечными пользователями, его стоит отправлять, только если пользователь выполнил определенное условие. То есть запрос инициируется после того, как конечный пользователь выполняет действие (например, on-click). В результате запроса может быть загружена карта, указано место назначения или показана необходимая информация. При таком подходе к API поступает меньше ненужных запросов, и вы не тратите квоту напрасно.

Не показывайте оверлеи при перемещении карты

Некоторые разработчики используют метод Draw(), чтобы показывать оверлеи со своим контентом на карте, когда пользователь ее перемещает. Мы не рекомендуем так делать. При каждом перемещении карта генерируется заново, и если в это время на ней будут оверлеи, это может привести к задержкам и перебоям в отрисовке карты. Поэтому добавляйте и удаляйте контент в оверлеях только после того, как пользователь закончит панорамировать карту или менять ее масштаб.

Не используйте в методах Draw ресурсоемкие операции

Как правило, в методах Draw() рекомендуется избегать ресурсоемких операций, не касающихся отрисовки. Например, не стоит включать в код Draw():

  • запросы, возвращающие большие объемы данных;
  • операции, инициирующие много изменений в данных на экране;
  • манипуляции с большим количеством объектов DOM.

Иначе скорость работы падает, а в отрисовке карты могут возникать задержки и перебои.

Используйте для маркеров растровые изображения

В качестве маркеров местонахождения на карте лучше использовать растровые изображения в формате PNG, JPG и др. Избегайте векторной графики (SVG-файлов): их отрисовка часто замедляет обновление карты.

Оптимизируйте маркеры

Оптимизация позволяет увеличить производительность, поскольку несколько маркеров отрисовываются как один статический элемент. Используйте эту функцию в системах с большим количеством маркеров. По умолчанию за оптимизацию отвечает Maps JavaScript API. Когда имеется большое количество маркеров, Maps JavaScript API попытается отрисовать маркеры с оптимизацией. Если какие-либо маркеры оптимизировать не удалось, Maps JavaScript API будет отрисовывать их без оптимизации. Отключите оптимизированную отрисовку для анимированных изображений GIF или PNG, а также в случаях, когда нужно отрисовывать каждый маркер в виде отдельного элемента DOM.

Используйте кластеры для управления маркерами

Чтобы вам было проще управлять маркерами местонахождения на карте, объединяйте их в кластеры с помощью библиотеки Marker Clusterer. Она позволяет настраивать:

  • размер сетки (количество маркеров в одном кластере);
  • максимальный масштаб кластера;
  • пути к изображениям, которые нужно использовать как значки маркеров.

Просмотр обычных видео

Информацию о том, как управлять расходами на платформу Google Карт, в том числе создавать бюджеты, изменять квоты и настраивать оповещения, можно найти в статье Управление расходами.