Обзор

В инструменте Google AMP Cache хранятся кешированные копии AMP-контента, который прошел проверку на соответствие техническим требованиям и был опубликован в Интернете. Напрямую из Google AMP Cache материалы загружаются быстрее.

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

Формат URL для контента в Google AMP Cache

Ниже описаны компоненты, из которых состоит URL этого формата.

Компонент Описание
Имя субдомена

Сгенерированные в Google AMP Cache субдомены имеют удобный для восприятия вид, когда этому не препятствуют ограничения на количество символов и технические требования. Эти субдомены очень похожи на домен самого издателя. Если есть возможность, то каждый субдомен создается в Google AMP Cache по следующему алгоритму:

  1. Домен AMP-документа преобразуется из формата IDN (Punycode) в UTF-8.
  2. Каждый дефис ("-") заменяется двумя дефисами ("--").
  3. Каждая точка (".") заменяется дефисом ("-").
  4. Домен преобразуется обратно в формат IDN (Punycode).

Например, домен pub.com сопоставляется с вариантом pub-com.cdn.ampproject.org. Если технические ограничения не позволяют создать удобочитаемый субдомен, используется односторонний хеш.

Тип контента Возможны следующие варианты: "c" обозначает HTML-документ с технологией AMP, "i" – изображение, а "r" – другой ресурс, например шрифт. Google AMP Cache возвращает ошибку 404, если запрашиваемый ресурс не относится ни к одному из этих типов контента (см. сведения в списке основных ошибок).
Необязательный компонент "s" Если указано значение "s", Google загружает контент из источника исключительно с применением протокола TLS (устанавливается защищенное HTTPS-соединение). Если "s" отсутствует, контент загружается с использованием обычного протокола HTTP.
URI URI запрашиваемого контента. URI не может содержать обозначений схемы, то есть начинаться с "http://" или "https://".

Как настроить извлечение имени субдомена

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

В остальных случаях для определения имени субдомена можно пользоваться интерактивным инструментом Using the Google AMP Cache на сайте amp.dev.

Пример запроса документа с использованием протокола TLS

URL запроса на получение HTML-документа с поддержкой технологии AMP (указан префикс /c) из источника https://example.com/amp_document.html будет выглядеть так:

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

Поскольку за префиксом /c следует /s, при загрузке документа с сайта example.com будет использоваться TLS.

Пример запроса изображения с применением обычного протокола HTTP

URL запроса на получение изображения (указан префикс /i) из источника http://example.com/logo.png:

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

Поскольку за префиксом /i не следует /s, Google загрузит изображение с сайта example.com, используя обычный протокол HTTP, а не HTTPS поверх TLS.

Пример параметра запроса

URL контента в Google AMP Cache также может содержать параметры в строке запроса. Вот пример такого URL с префиксом https: https://example-com.cdn.ampproject.org/c/s/example.com/g?value=Hello%20World

Обновление Google AMP Cache

Когда тот или иной пользователь запрашивает AMP-документ из Google AMP Cache, кеш автоматически отправляет запросы на обновление контента, чтобы следующий пользователь увидел новую кешированную версию. Благодаря этой модели AMP-документы обновляются без участия человека, а выполняется эта операция очень быстро. Если вы внесете изменения в контент, мало кто увидит его в прежнем виде.

Кеш работает по принципу "не обновлять, пока идет перепроверка". Вывод о том, активен ли определенный документ или ресурс, делается на основе заголовков кеширования в источнике, таких как Max-Age. Запрос неактуального контента со стороны пользователя активирует кеширование новой версии, которая затем будет показана следующему пользователю.

В Google AMP Cache любой документ считается актуальным в течение как минимум 15 сек., а любой ресурс – в течение как минимум одной минуты. Это нужно для того, чтобы снизить нагрузку на сайты издателей. Обратите внимание, что длительность этих интервалов в дальнейшем может быть изменена, поскольку мы будем стремиться к оптимальному балансу между актуальностью контента и нагрузкой на сайты.

Оптимизация, осуществляемая инструментом Google AMP Cache

Инструмент Google AMP Cache осуществляет разностороннюю оптимизацию, в рамках которой выполняет следующие действия:

  • Проверяет, действительно ли AMP-контент отвечает всем требованиям к этому формату, в частности относящимся к скорости загрузки.
  • Кеширует изображения и шрифты в дополнение к AMP-документам.
  • Ограничивает максимальные размеры изображений во избежание проблем с памятью браузера и скоростью отклика.
  • Выполняет различные преобразования с целью оптимизировать размещение изображений при помощи тега amp-img, в том числе следующие:
    • удаление данных, которые не видны или плохо заметны, например определенных метаданных;
    • конвертация изображений в более легкие и подходящие для мобильных устройств графические форматы, в частности преобразование GIF, PNG и JPEG в WebP для браузеров с поддержкой этого формата;
    • снижение качества изображения в случае, если в запросе содержится заголовок Save-Data;
    • создание альтернативных версий изображения, отличающихся размерами, и добавление атрибутов srcset для показа графического контента на экранах разной величины.
  • Передает контент по защищенному каналу (HTTPS) с использованием новейших протоколов (SPDY, HTTP/2).
  • Устраняет уязвимости в коде AMP-документов с целью предотвратить XSS-атаки, которые возможны при наличии неправильно закрытых HTML-тегов, комментариев и т. д.

Выполняя перечисленные выше преобразования, Google AMP Cache игнорирует директиву no-transform в поле заголовка Cache-Control.

Устранение уязвимостей в HTML

Google AMP Cache переписывает код всех документов, чтобы нормализовать их обработку. Помимо прочего, это выражается в следующем:

  • Все комментарии HTML удаляются.
  • Названия тегов и атрибутов переводятся в нижний регистр.
  • Значения атрибутов последовательно заключаются в кавычки и экранируются.
  • Все теги закрываются, за исключением пустых элементов HTML5.
  • Пробелы внутри тегов удаляются.
  • Текст экранируется.
  • Экранированные текстовые символы упрощаются с помощью эквивалентов в кодировке UTF-8.
  • Элементы, которые допускаются только внутри контейнера body, переносятся в body.
  • Исходящие ссылки преобразуются в абсолютные, чтобы они оставались рабочими при загрузке документа из источника Google AMP Cache вместо источника издателя.

Вставка тегов упреждающего запроса

Google AMP Cache добавляет различные теги упреждающего запроса, которые служат для браузеров командами на более раннюю загрузку ресурсов. Например, <link href='https://fonts.googleapis.com/css?family=Lato' rel='stylesheet’> заменяется на следующие варианты:

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