Как уменьшить количество вызовов карты в Angular веб-приложении (agm-core)? - PullRequest
1 голос
/ 29 мая 2020

У нас есть простое приложение, сделанное с помощью Angular, которое имеет 5 страниц, каждая с картой Google. Причина, по которой мы перешли на Angular, заключалась в том, чтобы мы могли уменьшить количество вызовов Map на сеанс пользователя до 1 (в приложении на основе javascript оно увеличивалось до 20 за сеанс!).

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

Вот наша настройка:

  • Мы используем библиотеку agm-core (а не сценарий JS напрямую). Мы разделили наше приложение на 5 подкомпонентов (каждая страница со своим собственным компонентом) с главным компонентом: / home. Карта импортируется в отдельный компонент на том же уровне, что и компонент «Дом»

  • Мы также разрешаем пользователям скрывать карту. Для этого мы попробовали две вещи: 1.) Установить нулевую высоту / ширину карты. 2.) Pu sh карта выходит за пределы экрана, и вернуть ее, когда пользователь захочет ее увидеть.

Наша структура компонентов:

- map-div
- home
  - page1
  - page2
  - page3
  - page4
  - page5

Щелчок по каждой из страниц не должен снова инициализировать map-div , однако после тестирования и глядя на вызовы API в GCP, мы понимаем, что каждый щелчок страницы по-прежнему засчитывается для вызовов карты.

Примечание: Чтобы проверить количество вызовов API, мы создали отдельную среду с новый ключ и выполнял ограниченные отслеживаемые шаги для определения правильного количества вызовов. Каждый щелчок по страницам 1..5 засчитывался как отдельный вызов API.

Ниже показано использование GCP API / Services -> Учетные данные -> Ключ после нажатия на страницы 1 .. .5, всего 12 раз.

Total usage (last 30 days)
12

Мы также просмотрели «Транзакции» в разделе «Биллинг», и число кажется правильным (плата за вызовы Dynami c Map).

Мы не просматривали код внутри agm-core и пытаемся избежать накладных расходов на реализацию настраиваемого класса с использованием Javascript в надежде, что должен быть лучший способ сделать это. Пожалуйста, оставьте комментарий, если мы можем включить дополнительную информацию / код.

Какой подход мы должны использовать, чтобы каждый сеанс обходился нам только в 1 загрузку карты?

Спасибо

1 Ответ

0 голосов
/ 31 мая 2020

Вы не можете построить его так, чтобы сеанс пользователя стоил вам только 1 загрузки карты. Для JavaScript API нет параметров на основе сеанса или кеширования, которые библиотека agm-core использует ниже.

Загрузка карты означает каждый раз, когда карта создается с google.maps.Map() класс. Даже если вы «спрячете» карту, но все равно создадите ее, это имеет значение. Каждая ссылка на веб-страницу sh, загружающая карту, считается. Таким образом, если каждая из этих страниц загружает карту, то ожидается, что количество загрузок карты увеличивается при каждом посещении указанной страницы (независимо от того, тот же пользовательский сеанс или нет).

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

...