Przewodnik optymalizacji

W tym przewodniku opisujemy kilka strategii optymalizacji wykorzystania interfejsów API Map Google pod kątem bezpieczeństwa, wydajności i wykorzystania.

Bezpieczeństwo

Przegląd sprawdzonych metod zapewniania bezpieczeństwa

Klucze interfejsu API to dane logowania ukierunkowane na projekt, w przypadku których należy stosować takie same środki ostrożności jak w przypadku identyfikatorów użytkowników i haseł. Zapoznaj się ze sprawdzonymi metodami zapewniania bezpieczeństwa interfejsu API, aby zabezpieczyć swoje klucze przed niezamierzonym użyciem, który może prowadzić do nadmiernego wykorzystania limitów i nieoczekiwanych opłat na koncie.

Używanie kluczy interfejsu API do uzyskiwania dostępu do interfejsów API Map Google

Klucze interfejsu API są preferowaną metodą uwierzytelniania dostępu do interfejsów API Map Google. Korzystanie z identyfikatorów klientów jest obecnie nadal obsługiwane, ale klucze interfejsu API obsługują bardziej zaawansowane opcje zabezpieczeń i można je dostroić pod kątem działania z określonymi adresami internetowymi, adresami IP i mobilnymi pakietami SDK (na Androida i iOS). Informacje o tworzeniu i zabezpieczaniu klucza interfejsu API znajdziesz na stronie „Używanie klucza interfejsu API” dla każdego interfejsu API lub pakietu SDK. Na przykład w przypadku interfejsu Maps JavaScript API odwiedź stronę Using an API Key (Używanie klucza interfejsu API).

Występy

Obsługa błędów przy użyciu wykładniczego ponowienia

Jeśli w aplikacjach występują błędy wynikające z nadmiernej liczby wywołań interfejsu API w krótkim czasie (np. błędy zapytań na sekundę), rozważ wykorzystanie wykładniczego ponowienia w celu przetworzenia żądań.

Ponawianie wykładnicze jest najbardziej przydatne w przypadku błędów w pierwszych 500 sekundach. Więcej informacji znajdziesz w artykule o obsłudze kodów stanu zwrotów HTTP.

a w szczególności dostosowuj tempo zapytań. W kodzie dodaj okres oczekiwania między zapytaniami wynoszący S s. Jeśli w przypadku zapytania nadal pojawia się błąd zapytań na sekundę, podwój okres oczekiwania i wyślij kolejne zapytanie. Dostosowuj okres oczekiwania, aż zapytanie nie zwróci błędów.

Wysyłanie na żądanie próśb o interakcję z użytkownikiem

Żądania do interfejsów API, które obejmują interakcje z użytkownikami, powinny być wysyłane tylko na żądanie. Oznacza to, że czeka się, aż użytkownik wykona działanie (np. on-click) w celu zainicjowania żądania do interfejsu API, a następnie użyje wyników do wczytania mapy, ustawienia miejsca docelowego lub wyświetlenia odpowiednich informacji. Dzięki metodzie na żądanie unikasz niepotrzebnych żądań kierowanych do interfejsów API, co zmniejsza wykorzystanie tych interfejsów.

Unikanie wyświetlania nakładki, gdy mapa jest w ruchu

Unikaj używania Draw() do wyświetlania na mapie niestandardowej nakładki w czasie, gdy użytkownik ją porusza. Ponieważ mapa jest rysowana ponownie za każdym razem, gdy użytkownik ją przesunie, jednoczesne umieszczenie na niej treści z nakładką może powodować opóźnienia lub zacinanie się. Dodaj lub usuń nakładkę z mapy tylko wtedy, gdy użytkownik przestanie przesuwać lub powiększać.

Unikanie intensywnych operacji w metodach Draw

Zalecamy, aby w metodzie Draw() unikać bardzo wydajnych operacji, które nie są rysunkami. Na przykład w kodzie metody Draw() unikaj tych elementów:

  • Zapytania, które zwracają dużą ilość treści.
  • Wiele zmian wyświetlanych danych.
  • manipulowanie wieloma elementami DOM;

Te operacje mogą spowolnić wydajność i spowodować opóźnienie lub zacinanie się obrazu podczas renderowania mapy.

Używanie obrazów rastrowych jako znaczników

Podczas dodawania znaczników w celu wskazania lokalizacji na mapie używaj obrazów rastrowych, np. obrazów w formacie PNG lub JPG. Unikaj używania obrazów SVG (Scalable Vector Graphics), ponieważ renderowanie obrazów SVG może powodować opóźnienia podczas ponownego renderowania mapy.

Optymalizacja znaczników

Optymalizacja zwiększa wydajność przez renderowanie wielu znaczników jako jednego elementu statycznego. Jest to przydatne, gdy wymagana jest duża liczba znaczników. Domyślnie interfejs Maps JavaScript API decyduje o tym, czy znacznik zostanie zoptymalizowany. W przypadku dużej liczby znaczników interfejs Maps JavaScript API spróbuje renderować je z optymalizacją. Nie wszystkie znaczniki można zoptymalizować. W niektórych sytuacjach interfejs Maps JavaScript API może wymagać renderowania bez optymalizacji. Wyłącz renderowanie zoptymalizowane w przypadku animowanych plików GIF lub PNG oraz sytuacji, gdy każdy znacznik musi być renderowany jako osobny element DOM.

Tworzenie klastrów w celu zarządzania wyświetlaniem znaczników

Aby ułatwić zarządzanie wyświetlaniem znaczników służących do identyfikowania lokalizacji na mapie, utwórz grupę znaczników za pomocą biblioteki Klaster znaczników. Biblioteka znaczników zawiera opcje umożliwiające:

  • Rozmiar siatki, który określa liczbę znaczników do zgrupowania w klastrze.
  • Maksymalne powiększenie, które określa maksymalny poziom powiększenia, z jakim ma być wyświetlany klaster.
  • Ścieżki obrazów, których obrazy mogą używać jako ikon znaczników.

Oglądanie treści

Aby zaplanować budżet i kontrolować koszty, wykonaj te czynności:

  • Ustaw alert dotyczący budżetu, aby śledzić wzrost kosztów względem określonej kwoty. Ustawienie budżetu nie ogranicza możliwości korzystania z interfejsu API – powiadamia tylko, gdy koszty zbliżą się do ustalonej kwoty.
  • Ogranicz dzienne wykorzystanie interfejsu API, aby zarządzać kosztami interfejsów API podlegających rozliczeniu. Ustawiając limity żądań dziennie, możesz ograniczyć koszty. Użyj prostego równania, aby określić limit dzienny w zależności od tego, ile chcesz wydać: (miesięczny koszt/cena za sztukę)/30 = limit dzienny liczby żądań (do jednego interfejsu API). Twoja implementacja może korzystać z wielu płatnych interfejsów API, więc dostosuj równanie zależnie od potrzeb. W każdym miesiącu dostępne są środki w wysokości 200 USD do wykorzystania w interfejsach API Map Google, więc uwzględnij tę informację w swoich obliczeniach.
  • Używaj wielu projektów, aby izolować, ustalać priorytety i śledzić wykorzystanie. Załóżmy na przykład, że regularnie w swoich testach używasz interfejsów API Google Maps Platform. Tworząc osobny projekt na potrzeby testów z własnymi limitami i kluczami interfejsu API, możesz przeprowadzić dokładne testy, chroniąc jednocześnie przed nadmiernymi wydatkami.

Zarządzanie wykorzystaniem w Mapach

Używanie 1 mapy na stronę to dobry sposób na optymalizację ich wyświetlania, ponieważ użytkownicy zwykle korzystają z tylko jednej mapy naraz. Aplikacja może modyfikować mapę, aby wyświetlać różne zbiory danych w zależności od interakcji i potrzeb klienta.

Używanie statycznych obrazów

Żądania wykorzystujące zdjęcia dynamiczne (dynamiczne mapy i dynamiczne widoki Street View) kosztują więcej niż mapy statyczne i statyczne zdjęcia Street View. Jeśli nie przewidujesz interakcji użytkowników z mapą lub Street View (powiększeniem lub przesuwaniem), użyj statycznych wersji tych interfejsów API.

Miniatury, czyli bardzo małe mapy i zdjęcia, to kolejny dobry sposób na korzystanie ze statycznych map i zdjęć Street View. Elementy te są rozliczane według niższej stawki i po kliknięciu przez użytkownika. Mogą one wyświetlać użytkownikom wersję dynamiczną, aby w pełni wykorzystać możliwości Map Google.

Korzystanie z interfejsu Maps Embed API

Za pomocą interfejsu Maps Embed API możesz bezpłatnie dodawać mapę z pojedynczym znacznikiem lub mapę dynamiczną. Używaj interfejsu Maps Embed API w aplikacjach, w których nie jest potrzebny 1 znacznik i nie trzeba dostosowywać mapy. Opłaty za żądania do interfejsu Maps Embed API wykorzystujące tryb wskazówek dojazdu, tryb widoku lub tryb wyszukiwania będą naliczane (szczegóły znajdziesz w tabeli cen).

Korzystanie z pakietów SDK map mobilnych w aplikacjach mobilnych

W przypadku aplikacji mobilnych do wyświetlania mapy użyj pakietu Maps SDK na Androida lub Maps SDK na iOS. Jeśli wymagania uniemożliwiają korzystanie z mobilnych pakietów SDK, użyj interfejsu Maps Static API lub Maps JavaScript API.

Zarządzanie wykorzystaniem na trasach

Ograniczanie punktów pośrednich interfejsu Directions API

Gdy to możliwe, ogranicz wpisy użytkowników w zapytaniu do maksymalnie 10 punktów pośrednich. Żądania zawierające ponad 10 punktów pośrednich są rozliczane według wyższej stawki.

Korzystanie z optymalizacji interfejsu Directions API w celu uzyskania optymalnego routingu

Żądania używające argumentu optymalizacji punktów pośrednich są rozliczane według wyższej stawki. Więcej informacji znajdziesz w artykule o optymalizacji punktów Waypoints (Optymalizowanie punktów pośrednich).

Argument optymalizacji sortuje punkty pośrednie, aby zapewnić optymalne wyznaczanie trasy. Oznacza to, że podróż z punktu A do E jest wygodniejsza w przypadku zoptymalizowania (A-B-C-D-E) niż losowa sekwencja niezoptymalizowanej trasy (takiej jak A-D-B-C-E).

Korzystanie z modeli ruchu w czasie rzeczywistym w interfejsach Directions API i Range Matrix API

Żądania do Directions API i Odległość Matrix API, które obejmują modele ruchu w czasie rzeczywistym, są rozliczane częściej. Aby włączyć modele ruchu w czasie rzeczywistym, ustaw godzinę odjazdu na now.

Jeśli w żądaniu pomijane są modele natężenia ruchu, wyniki zależą wyłącznie od czynników fizycznych: dróg, odległości i ograniczeń prędkości.

Korzystanie z tras przebytych i najbliższej drogi, gdy dane GPS są nieprecyzyjne

Funkcje interfejsu Maps Roads API: Przebyta trasa i najbliższa droga są dostępne na poziomie zaawansowanym i są rozliczane według wyższej stawki. Korzystaj z tych funkcji, gdy dane GPS są nieprecyzyjne, a interfejs Roads API może pomóc w określeniu właściwej drogi. Ograniczenia prędkości, inna funkcja interfejsu Roads API, jest dostępna tylko dla klientów korzystających ze śledzenia zasobów.

Lokalizacje z ograniczeniem szybkości próbkowania co 5–15 minut

Aby zminimalizować liczbę wywołań usługi ograniczenia prędkości interfejsu Maps Roads API, próbuj lokalizacje swoich zasobów z odstępami 5–15 minut. Dokładna wartość zależy od prędkości, z jaką komponent się porusza. Jeśli zasób jest nieruchomy, wystarczy jedna próbka lokalizacji. Nie ma potrzeby wykonywania wielu połączeń.

Aby zminimalizować ogólny czas oczekiwania, po zebraniu danych należy wywoływać usługę limitu prędkości, zamiast wywoływać interfejs API za każdym razem, gdy otrzymujemy daną lokalizację zasobu mobilnego.

Zarządzanie wykorzystaniem w Miejscach

Optymalizacja implementacji autouzupełniania miejsc

Aby zoptymalizować koszty korzystania z autouzupełniania miejsc:

  • używać masek pól w widżetach autouzupełniania JavaScript, Androida i iOS, aby zwracać tylko te pola danych miejsc, których potrzebujesz.

  • zależy od konkretnego przypadku użycia. W zależności od tego, czy implementacja korzysta z sesji autouzupełniania, czy nie, opłaty są naliczane za kody SKU Autouzupełnianie – na żądanie lub Autouzupełnianie – na sesję.

Więcej informacji i wskazówek dotyczących wyboru opcji odpowiedniej do Twojego zastosowania znajdziesz w artykule Sprawdzone metody optymalizacji kosztów autouzupełniania przy użyciu autouzupełniania.

Zwracanie danych z określonych pól w szczegółach miejsca i żądaniach wyszukiwania miejsc

Możesz dostosować żądania dotyczące szczegółów miejsca i wyszukiwania miejsc, aby zwracać dane dotyczące określonych pól w Twojej aplikacji. Są one podzielone na kategorie: Podstawowe, Kontakt i Atmosfera. Żądania, które nie zawierają żadnych pól, będą otrzymywać dane we wszystkich polach.

Płatności za prośby o szczegóły dotyczące miejsca zależą od rodzaju i ilości żądanych danych. Żądania, które nie mają określonych pól, będą rozliczane według pełnej stawki. Więcej informacji można znaleźć w sekcjach Szczegółowe informacje o miejscach i Wyszukiwanie miejsc.

Zmniejszanie kosztów przy użyciu interfejsu Geocoding API

Jeśli Twoja aplikacja obsługuje adresy wpisywane przez użytkowników, adresy te są czasem niejednoznaczne (niepełne, błędnie zapisane lub źle sformatowane). Rozpoznaj adresy za pomocą autouzupełniania, a potem użyj identyfikatorów miejsc, aby uzyskać ich lokalizację.

Jeśli masz dokładny adres (lub znajdujący się w pobliżu), możesz ograniczyć koszty, stosując geokodowanie zamiast autouzupełniania. Więcej informacji znajdziesz w artykule o sprawdzonych metodach dotyczących geokodowania adresów.

Jak działają limity w Google Maps Platform

Wszystkie nasze interfejsy API mają ograniczoną liczbę wywołań, które może wykonać każdy klient. Limity są ustalane na bieżąco. Gdy osiągniesz limit wywołań danego interfejsu API w ciągu minuty, przyszłe wywołania nie będą akceptowane aż do najbliższej minuty.

Do limitu wliczają się tylko udane żądania i żądania powodujące błędy serwera. Żądania, które nie przejdą uwierzytelniania, nie wliczają się do limitu.

Oprócz egzekwowania limitu na minutę kilka interfejsów API Map Google wymaga wymuszania ich na sekundę. Egzekwowanie zasad na sekundę nie gwarantuje jednolitego wykorzystania w całej minucie ani nie zapobiegnie osiągnięciu limitu wykorzystania na tę minutę. Uniemożliwia to wykorzystanie całego limitu w ciągu pierwszej lub dwóch minut i chroni przed przerwami w działaniu usługi w przypadku nagłego zwiększenia wykorzystania. Aby uwzględnić te różnice w egzekwowaniu zasad, zaplanuj wykorzystanie limitu i wymagania, uśredniając wykorzystanie QPM w stosunku do liczby zapytań na sekundę.

Interfejsy GMP API, które mają ustawione egzekwowanie w ciągu sekundy, to Directions API, Odległość Matrix API, Elevation API, Geocoding API, Places API oraz Roads API.

Oszacuj koszty dowolnej usługi GMP API na podstawie łącznej liczby żądań