Omówienie

Google AMP Cache udostępnia zapisane w pamięci podręcznej kopie poprawnych treści AMP opublikowanych w internecie. Wyświetlanie treści bezpośrednio z Google AMP Cache jest szybsze.

Aby skorzystać z Google AMP Cache, adres URL AMP musi zostać otwarty bezpośrednio z pamięci podręcznej z wykorzystaniem formatu URL pamięci podręcznej AMP. Za każdym razem, gdy użytkownik uzyskuje dostęp do treści AMP z pamięci podręcznej, treści są automatycznie aktualizowane, a zaktualizowana wersja jest wyświetlana kolejnemu użytkownikowi, gdy zostanie zapisana w pamięci podręcznej.

Format adresu URL pamięci podręcznej AMP

Format adresu URL pamięci podręcznej AMP zawiera te komponenty:

Komponent Opis
Nazwa subdomeny

Nazwy subdomen utworzone przez Google AMP Cache będą zrozumiałe dla człowieka, jeśli pozwolą na to limity znaków i specyfikacje techniczne. Będą również przypominały własne domeny wydawcy. Jeśli będzie to możliwe, Google AMP Cache utworzy każdą subdomenę według tych kroków:

  1. Konwersja domeny dokumentu AMP z IDN (Punycode) na UTF-8.
  2. Zastąpienie każdego „-” (łącznika) „--” (dwoma łącznikami).
  3. Zastąpienie każdej „.” (kropki) „-” (łącznikiem).
  4. Konwersja z powrotem na IDN (Punycode).

Na przykład pub.com będzie mapowany na pub-com.cdn.ampproject.org. Jeśli ograniczenia techniczne uniemożliwią utworzenie nazwy subdomeny zrozumiałej dla człowieka, zostanie użyty hash jednokierunkowy.

Typ treści Używane są te typy treści: „c” dla dokumentu HTML AMP, „i” dla obrazu oraz „r” dla zasobu takiego jak czcionka. Google AMP Cache zwraca błąd 404 w przypadku zasobów, które nie są zgodne z tymi typami treści (patrz błąd podstawowy).
Opcjonalne „s” Jeśli jest dołączony, wymaga by usługa Google AMP Cache pobierała treści z pierwotnego miejsca z wykorzystaniem TLS (bezpiecznej wersji HTTPS). Jeśli parametr „s” nie jest dołączony, treści są pobierane przez zwykły protokół HTTP.
URI Identyfikator URI treści do pobrania. Identyfikator URI nie może zawierać schematu, czyli nie można wˆnim umieścić „http://” ani „https://”.

Wyszukiwanie nazwy subdomeny

Zwykle nazwa subdomeny dla adresu URL Google AMP Cache to zrozumiała dla człowieka konwersja pierwotnego adresu URL, przeprowadzona według wyżej podanych kroków. Czasami jednak może być inaczej, dlatego najlepszym sposobem pobierania adresów URL Google AMP Cache w przypadku aplikacji w wersji produkcyjnej jest użycie interfejsu Google AMP Cache URL API.

W przypadku rozwiązań nieprzeznaczonych do produkcji nazwę subdomeny generowanej przez Google AMP Cache można określić, używając interaktywnego narzędzia Using the Google AMP Cache (Używanie Google AMP Cache) na stronie amp.dev.

Przykład żądania dokumentu z użyciem TLS

Żądanie dokumentu HTML AMP (określonego prefiksem /c) pobieranego z https://example.com/amp_document.html:

https://example-com.cdn.ampproject.org/c/s/example.com/amp_document.html

Ponieważ /s znajduje się za prefiksem /c, dokument zostanie pobrany z domeny example.com z użyciem protokołu TLS.

Przykład żądania grafiki z użyciem zwykłego HTTP

Żądanie grafiki (określonej prefiksem /i) pobieranej z http://example.com/logo.png:

https://example-com.cdn.ampproject.org/i/example.com/logo.png

Ponieważ nie ma parametru /s po prefiksie /i, Google pobierze grafikę z domeny example.com, używając zwykłego protokołu HTTP, a nie HTTP przez TLS.

Przykład parametru zapytania

Format adresu URL pamięci podręcznej AMP może również zawierać parametry w ciągu zapytania. Poniżej znajduje się przykład żądania HTTPS z parametrami: https://example-com.cdn.ampproject.org/c/s/example.com/g?value=Hello%20World

Aktualizacje Google AMP Cache

Gdy użytkownik wysyła żądanie dokumentu AMP z Google AMP Cache, pamięć podręczna automatycznie wysyła żądanie aktualizacji, by udostępnić aktualną treść następnemu użytkownikowi po zapisaniu jej w pamięci podręcznej. W tym modelu aktualizacje dokumentów AMP są rozpowszechniane szybko i automatycznie – po dokonaniu aktualizacji treści przez wydawcę niewielu użytkowników zobaczy nieaktualną wersję.

Pamięć podręczna jest zgodna z modelem „stale-while-revalidate” (nieaktualny w czasie rewalidacji). Wykorzystuje nagłówki pamięci podręcznej źródła takie jak Max-Age do określenia, czy dany dokument lub zasób jest nieaktualny. Gdy użytkownik prześle żądanie nieaktualnego zasobu, powoduje ono pobranie nowej kopii, dzięki czemu kolejny użytkownik otrzyma już aktualną treść.

Aby ograniczyć obciążenie ruchem stron wydawców, Google AMP Cache uznaje każdy dokument za aktualny przez co najmniej 15 sekund, a każdy zasób przez co najmniej minutę. Te wartości mogą zostać zmienione w przyszłości, ponieważ dostrajamy pamięć podręczną tak, by uzyskać optymalną równowagę między aktualnością treści i obciążeniem stron wydawców.

Optymalizacje i modyfikacje pamięci podręcznej

Google AMP Cache wykonuje optymalizacje i modyfikacje takie jak:

  • Sprawdzenie, czy treści są rzeczywiście w formacie AMP i spełniają wszystkie cele AMP związane z wydajnością.
  • Zapisywanie w pamięci podręcznej grafik i czcionek oprócz dokumentów AMP.
  • Ograniczanie maksymalnych wymiarów grafik, by zapobiec problemom z pamięcią w przeglądarkach oraz długim czasom reakcji.
  • Przeprowadzanie różnych transformacji w celu poprawienia wydajności dostarczania grafik z wykorzystaniem tagu amp-img:
    • Usunięcie niewidocznych lub trudnych do zauważenia danych, np. niektórych metadanych.
    • Konwersja obrazów na mniejsze i lepiej dostosowane do komórek formaty obrazów – np. konwersja formatów GIF, PNG i JPEG na WebP w przeglądarkach obsługujących ten format.
    • Transformacja obrazu do niższej jakości, jeśli żądanie zawiera nagłówek Save-Data.
    • Generowanie wersji o innych rozmiarach i dodawanie atrybutów srcset w celu przesyłania obrazów o wielkości niespowalniającej działania przeglądarki.
  • Przesyłanie bezpiecznym kanałem (HTTPS) i korzystanie z najnowszych protokołów internetowych (SPDY, HTTP/2).
  • Sanityzacja dokumentów AMP w celu zapobieżenia atakom XSS opartym na nieprawidłowo zamkniętych tagach HTML, komentarzach i innych elementach.

Przeprowadzając powyższe transformacje, Google AMP Cache ignoruje nagłówek „Cache-Control: no-transform”.

Sanityzacja kodu HTML

Google AMP Cache przepisuje wszystkie dokumenty, by znormalizować analizę kodu. Przykłady:

  • Wszystkie komentarze HTML są usuwane.
  • Nazwy tagów i atrybutów są zapisywane małymi literami.
  • Wartości atrybutów są umieszczane w cudzysłowach i zapisywane ze zmianą znaczenia.
  • Wszystkie tagi są zamykane, oprócz pustych elementów HTML5.
  • Białe znaki w tagach są usuwane.
  • W tekście są stosowane elementy zmieniające znaczenie znaków.
  • Zakodowane znaki tekstowe są upraszczane z użyciem równoważnych znaków UTF-8.
  • Elementy, które mogą znajdować się tylko w sekcji body, są umieszczane w sekcji body.
  • Linki wychodzące są zmieniane na bezwzględne, by nadal działały, gdy dokument zostanie przesłany z Google AMP Cache, a nie z pierwotnej witryny wydawcy.

Wstawanie tagów pobierania wstępnego

Google AMP Cache dodaje różne tagi wstępnego pobierania obsługiwane przez przeglądarki, by wspomóc wcześniejsze ładowanie zasobów. Na przykład <link href='https://fonts.googleapis.com/css?family=Lato' rel='stylesheet’> zmienia się na:

<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link href="https://fonts.gstatic.com" rel="preconnect">
<link href="https://fonts.gstatic.com" rel="dns-prefetch">