Przewodnik optymalizacji

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

Zabezpieczenia

Sprawdzanie sprawdzonych metod zapewniania bezpieczeństwa

Klucze API to dane logowania dotyczące projektu, które zasługują na te same środki ostrożności co identyfikatory użytkowników i hasła. Zapoznaj się ze sprawdzonymi metodami dotyczącymi zabezpieczeń interfejsu API, aby zabezpieczyć się przed nieoczekiwanym użyciem, co może skutkować nadmiernym wykorzystaniem limitu i nieoczekiwanymi obciążeniami konta.

Dostęp do interfejsów API Map Google za pomocą kluczy interfejsu API

Klucze interfejsu API są preferowaną metodą uwierzytelniania dostępu do interfejsów API Map Google. Chociaż identyfikatory klientów są nadal obsługiwane, klucze interfejsu API obsługują bardziej szczegółową kontrolę bezpieczeństwa i można je dostosować do konkretnych adresów internetowych, adresów IP oraz mobilnych pakietów SDK (na Androida i iOS). Informacje o tworzeniu i zabezpieczaniu klucza interfejsu API znajdziesz na stronie „Korzystanie z klucza interfejsu API” dla każdego interfejsu API lub pakietu SDK. (Na przykład w przypadku interfejsu API JavaScript Map Google odwiedź stronę Używanie klucza interfejsu API).

Wydajność

Korzystanie z wykładniczego ponowienia do obsługi błędów

Jeśli w Twoich aplikacjach występują błędy w wyniku nadmiernej liczby prób wywołania interfejsu API w krótkim czasie (np. błędów zapytań na sekundę), rozważ zastosowanie wykładniczego ponawiania, by umożliwić przesyłanie żądań.

Wykładnicze ponowienie jest najbardziej przydatne w przypadku błędów 500. Więcej informacji znajdziesz w sekcji Obsługa kodów stanu odpowiedzi HTTP.

W szczególności możesz dostosować tempo zapytań. W kodzie wpisz okres oczekiwania wynoszący S sekundy między zapytaniami. Jeśli zapytanie nadal zwraca błąd QPS, podwój okres oczekiwania, a następnie wyślij kolejne. Kontynuuj dostosowywanie okresu oczekiwania, aż zapytanie się nie zwróci.

wysyłanie na żądanie żądań interakcji.

Żądania do interfejsów API, które zawierają interakcje użytkowników, powinny być wysyłane tylko na żądanie. Musisz zaczekać, aż użytkownik wykona działanie (np. on-click) w celu zainicjowania żądania do interfejsu API, a potem użyje wyników do załadowania mapy, ustawienia miejsca docelowego lub wyświetlenia odpowiednich informacji. Stosując takie rozwiązania, unikniesz niepotrzebnych żądań do tych interfejsów.

Unikanie wyświetlania zawartości nakładki podczas przesuwania mapy

Nie używaj Draw(), aby wyświetlać na mapie niestandardowe nakładki w tym samym czasie, w których użytkownik może przesuwać mapę. Mapa jest ponownie rysowana za każdym razem, gdy użytkownik przesuwa mapę, dlatego jednoczesne umieszczenie na niej treści może wprowadzić w opóźnienie lub zacinać się wzrok. Dodawaj lub usuwaj treści map na mapie tylko wtedy, gdy użytkownik przesunie je lub powiększy.

Unikanie intensywnych operacji w Draw metodach

Ogólnie zaleca się, aby w metodzie Draw() unikać intensywnych operacji niewymagających rysowania. Unikaj np. kodu Draw() metody:

  • Zapytania, które zwracają dużo treści.
  • Wiele zmian w wyświetlanych danych.
  • Manipulowanie wieloma elementami DOM.

Operacje te mogą spowalniać działanie i w trakcie renderowania mapy powodować przeskoki lub opóźnienia.

Używanie obrazów rastrowych do oznaczania znaczników

Dodając znaczniki do identyfikowania lokalizacji na mapie, użyj obrazów rastrowych, takich jak PNG lub PNG. Unikaj używania obrazów SVG (Scalable Vector Image), ponieważ renderowanie obrazów SVG może powodować opóźnienia po ponownym rysowaniu mapy.

Znaczniki optymalizacji

Optymalizacja zwiększa skuteczność poprzez renderowanie wielu znaczników jako pojedynczego elementu statycznego. Jest to przydatne w przypadkach, 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 podejmie próbę renderowania znaczników przy użyciu optymalizacji. Nie wszystkie znaczniki można optymalizować. W niektórych przypadkach interfejs Maps JavaScript API może wymagać renderowania znaczników bez optymalizacji. Wyłącza zoptymalizowane renderowanie animowanych GIF-ów lub plików PNG albo gdy każdy znacznik musi być renderowany jako osobny element DOM.

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

Aby zarządzać wyświetlaniem znaczników w celu identyfikacji lokalizacji na mapie, utwórz klaster znaczników za pomocą biblioteki Marker klasyfikatorów. Biblioteka klasyfikatorów znaczników zawiera następujące opcje:

  • Rozmiar siatki pozwalający określić liczbę znaczników, które należy zgrupować w klastrze.
  • Maksymalne powiększenie określające maksymalny poziom powiększenia klastra.
  • Ścieżki obrazów, które mają być używane jako obrazy.

Konsumpcja

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

  • Ustaw alert dotyczący budżetu, aby śledzić wzrost kosztów do określonej kwoty. Ustawienie budżetu nie ogranicza wykorzystania interfejsu API – pokazuje tylko, gdy koszty zbliżają się do określonej kwoty.
  • Ogranicz dzienne wykorzystanie interfejsów API, aby zarządzać kosztami płatnych interfejsów API. 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ć: (koszt miesięczny/cena za każdy))/30 = żądania dziennie (1 interfejs API). W konkretnej implementacji możesz używać wielu płatnych interfejsów API, więc dostosuj równanie odpowiednio do potrzeb. Co miesiąc otrzymujesz 200 USD do wykorzystania w interfejsach API Map Google.
  • Używaj wielu projektów, aby izolować i śledzić wykorzystanie zasobów. Załóżmy na przykład, że w swoich testach regularnie korzystasz z interfejsów API Google Maps Platform. Przez utworzenie osobnego projektu do testów – z własnymi limitami i kluczami interfejsu API – możesz przeprowadzić dokładny test, chroniąc go przed niespodziewanymi nadmiernemi wydatkami.

Zarządzanie konsumpcją w Mapach

Korzystanie z jednej mapy na stronę jest dobrym sposobem na optymalizację ich wyświetlania, ponieważ użytkownicy zwykle używają tylko jednej mapy naraz. Twoja aplikacja może manipulować mapą, aby wyświetlać różne zbiory danych w zależności od interakcji i potrzeb klientów.

Używanie obrazów statycznych

Żądania korzystające z dynamicznych zdjęć (dynamicznych map i dynamicznego Street View) kosztują więcej niż mapy statyczne i statyczny widok Street View. Jeśli nie przewidujesz interakcji użytkowników z mapą lub widokiem Street View (powiększanie lub przesuwanie), skorzystaj ze statycznych wersji tych interfejsów API.

Miniatury – bardzo małe mapy i zdjęcia – przydają się też do tworzenia statycznych map i Street View. Opłaty za te elementy są naliczane poniżej stawki i za interakcje z użytkownikiem (kliknięcie). Mogą one prowadzić użytkowników do wersji dynamicznej, z której mogą korzystać w pełni z Map Google.

Korzystanie z interfejsu API umieszczania na stronie

Możesz dodać do mapy mapę z pojedynczym znacznikiem lub mapę dynamiczną bez opłat. Jeśli masz 1 znacznik i nie musisz dostosowywać mapy, używaj interfejsu API Map Google do umieszczania. Opłaty za żądania do Osadzenia interfejsu API Map Google wykorzystujące tryb wskazówek dojazdu, tryb widoku lub tryb wyszukiwania będą naliczane (szczegółowe informacje znajdziesz w tabeli cen).

Korzystanie z pakietów SDK Map Google do aplikacji mobilnych

W przypadku aplikacji mobilnych do wyświetlania mapy użyj Maps SDK na Androida lub Maps SDK na iOS. Używaj interfejsu Maps Static API lub Maps JavaScript API, gdy wymagania wykluczają stosowanie mobilnych pakietów SDK.

Zarządzanie konsumpcją w Routes

Ograniczenia punktów orientacyjnych Route API

Jeśli to możliwe, ogranicz liczbę wpisów użytkowników w zapytaniu do maksymalnie 10 punktów na trasie. Żądania zawierające więcej niż 10 punktów pośrednich są rozliczane według wyższej stawki.

Optymalizowanie routingu za pomocą interfejsu Trasa API

Żądania wysyłane za pomocą argumentu optymalizacji punktów pośrednich są rozliczane według wyższej stawki. Więcej informacji znajdziesz w artykule Optymalizowanie punktów pośrednich.

Argument optymalizacji optymalizuje punkty zwrotne w celu zapewnienia optymalnego wyznaczania tras. Oznacza to, że podróż z punktu A do E jest lepsza w przypadku optymalizacji (A-B-C-D-E) niż losowa sekwencja niezoptymalizowanej trasy (np. A-D-B-C-E).

Korzystanie z modeli ruchu w czasie rzeczywistym w usłudze Route API i odległości

Żądania do Route API i żądań interfejsu uruchamianych przez interfejs macierzy odległości, które zawierają modele ruchu w czasie rzeczywistym, są rozliczane według wyższej stawki. Modele natężenia ruchu w czasie rzeczywistym są włączone, ustawiając godzinę wyjazdu na now.

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

Korzystanie z przebytej trasy i najbliższej drogi, gdy dane GPS są niedokładne

Funkcje interfejsu API Map Google związane z drogą, Trasa przebyta i najbliższa droga, są uwzględnione w abonamencie zaawansowanym i rozliczane według wyższej stawki. Korzystaj z tych funkcji, gdy dane GPS są niedokładne, a interfejs API Roads ułatwia określenie właściwej drogi. Ograniczenia prędkości, inna funkcja interfejsu Roads API, są dostępne tylko dla klientów korzystających z funkcji śledzenia zasobów.

Próbka z ograniczeniem szybkości udostępniania lokalizacji w interwałach 5–15-minutowych

Aby zminimalizować liczbę wywołań usługi Limit prędkości interfejsu Maps Roads API, przetestuj lokalizacje w 5–15-minutowych przedziałach. Dokładna wartość zależy od szybkości poruszania się zasobu. Jeśli zasób jest nieruchomy, wystarczy jedna próbka lokalizacji. Nie musisz wykonywać wielu połączeń.

Aby zminimalizować całkowity czas oczekiwania, wywołaj usługę Speed Speed po zebraniu niektórych danych, zamiast wywoływać interfejs API za każdym razem, gdy odbierasz lokalizację zasobu mobilnego.

Zarządzanie korzystaniem z Miejsc

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, by zwracać tylko potrzebne pola danych miejsca;

  • Wybór opcji rozliczeń zależy od konkretnego przypadku użycia. W zależności od tego, czy Twoja implementacja korzysta z sesji podsumowujących, opłaty za SKU Autouzupełnianie – na żądanie lub Autouzupełnianie.

Więcej informacji i wskazówek dotyczących wyboru odpowiedniej opcji dla danego przypadku znajdziesz w artykule Korzystanie ze sprawdzonych metod optymalizacji kosztów autouzupełniania.

Zwracanie danych do konkretnych pól w szczegółach miejsca i żądaniach wyszukiwania miejsc

Możesz dostosować informacje o miejscach i żądania wyszukiwania miejsc, aby zwracać dane dotyczące konkretnych pól używanych w aplikacji. Te pola są podzielone na kategorie: Podstawowe, Kontakt i Atmosfera. Żądania, które nie mają określonych pól, będą otrzymywać dane dla wszystkich pól.

Płatności za żądania dotyczące szczegółów miejsca zależą od typów i ilości żądanych danych. Żądania, które nie obejmują żadnych pól, będą rozliczane według pełnej stawki. Więcej informacji znajdziesz w sekcjach Szczegóły miejsca i Wyszukiwanie miejsc.

Obniżanie kosztów za pomocą interfejsu Geocode API

Jeśli aplikacja obsługuje adresy wpisywane przez użytkowników, mogą być niejednoznaczne (niekompletne, błędne lub błędnie sformatowane). Użyj funkcji autouzupełniania, aby zidentyfikować adresy, a następnie użyj identyfikatorów miejsc, aby uzyskać informacje o miejscach.

Jeśli masz dokładny adres (lub jest on w pobliżu), możesz zmniejszyć koszty, korzystając z geokodowania zamiast autouzupełniania. Aby dowiedzieć się więcej, zobacz Sprawdzone metody geokodowania adresów.

Jak działają limity w Google Maps Platform

Wszystkie nasze interfejsy API ograniczają liczbę wywołań, które może wykonać każdy klient. Te limity są konfigurowane co minutę. Gdy w ciągu minuty zostanie osiągnięty limit wywołań danego interfejsu API, przyszłe wywołania będą przyjmowane dopiero od następnej minuty.

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

Oprócz egzekwowania limitu minut na korzystanie z interfejsów API Map Google obowiązuje też limit sekundowy. Takie egzekwowanie nie gwarantuje jednolitego wykorzystania w ciągu całej minuty ani nie powoduje osiągnięcia limitu wykorzystania w danej minucie. Zapobiega to wykorzystaniu całego limitu w ciągu pierwszej lub dwóch minut w każdej minucie i chroni przed przerwami w działaniu w przypadku nagłego wzrostu wykorzystania. Aby poradzić sobie z tymi różnicami w zakresie egzekwowania zasad, zaplanuj wykorzystanie limitu i związane z nim wymagania, uśredniając w tym celu poziom wykorzystania QPM.

Interfejsy API GMP, które mają egzekwowane w ciągu sekundy, to Trasa API, Interfejs API odległości, Interfejs API Elevation, Geocode API, Places API i Roads API.

Oszacuj koszty każdej usługi interfejsu GMP API na podstawie całkowitej liczby żądań.