AMP

Интеграция AMP с вашим приложением

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

Преобразование ссылок в AMP-ссылки

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

Например, в сообщении ниже можно заменить все URL-адреса на соответствующие им AMP-версии адресов (если таковые существуют), чтобы при нажатии на ссылки открывались AMP-версии страниц. Для того чтобы снизить время загрузки и гарантировать показ корректных AMP-страниц, лучше использовать ссылки на страницы из AMP-кеша.

Исходное сообщение:

This is a message with links to an <a href="http://www.example.org/a">
article with AMP version</a> and an <a href="http://www.example.org/b"> article without AMP version</a>.

Преобразованное сообщение:

This is a message with links to an <a href="https://www-example-org.cdn.ampproject.org/c/www.example.org/a">
article with AMP version</a> and an <a href="www.example.org/b"> article without AMP version</a>.

СОВЕТ. Рекомендуется дать пользователям возможность просматривать обычные (не-AMP) версии страниц, добавив в приложение соответствующую настройку.

Способы преобразования ссылок

Есть три способа программной реализации преобразования ссылок:

  1. При сохранении на стороне сервера (рекомендуется): при сохранении URL-адреса его AMP-версия загружается с помощью Google AMP URL API и сохраняется на сервере. Клиенту передаются оба URL-адреса, так как оригинальный URL-адрес может понадобиться для того, чтобы им поделиться. Такой подход является предпочтительным, поскольку снижает количество сетевых запросов на стороне клиента. При использовании этого подхода важно регулярно (например, ежедневно) сканировать ссылки на предмет наличия их AMP-версий, так как все больше сайтов внедряют поддержку формата AMP.
  2. При чтении на стороне сервера (уместно в некоторых случаях): AMP-версия URL-адреса загружается при помощи Google AMP URL API перед передачей контента клиенту. Как упоминалось выше, клиенту следует передавать оба варианта URL-адреса (AMP и не-AMP), так как оригинальный адрес может понадобиться для того, чтобы им поделиться. Этот способ может хорошо подходить сервисам с низким уровнем массовых рассылок.
  3. На стороне клиента (если преобразование на стороне сервера невозможно): AMP-версия URL-адреса загружается на стороне клиента при помощи Google AMP URL API. Используйте этот подход, если преобразование на стороне сервера невозможно (например, в мессенджерах со сквозным шифрованием). Преобразование URL-адреса следует осуществлять сразу же после получения контента — до того, как пользователь успеет нажать на ссылку.

ВАЖНО! Никогда не запрашивайте AMP-версии URL посредством Google AMP API в ответ на действие, совершаемое пользователем, поскольку обработка дополнительного сетевого запроса снижает производительность вашего приложения. Вместо этого используйте один из способов, описанных выше.

Google AMP URL API

Google предоставляет интерфейс AMP URL API, принимающий список URL-адресов и возвращающий
соответствующие им URL-адреса AMP HTML (официальная документация / демонстрация). URL-адреса не требуется приводить к каноническому виду. Если AMP-версия адреса существует, ответ будет содержать оригинальную AMP-версию URL, а также URL той же страницы в Google AMP Cache.

Например, возьмем список URL-адресов:

{
  "urls": [
    "https://www.example.org/article-with-amp-version",
    "http://www.example.com/no-amp-version.html"
  ]
}

Тело ответа будет содержать найденные AMP-версии URL-адресов в формате JSON:

{
  "ampUrls": [
    {
      "originalUrl": "https://www.example.org/article-with-amp-version",
      "ampUrl": "https://www.example.org/article-with-amp-version/amp",
      "cdnAmpUrl": "https://www-example-org.cdn.ampproject.org/c/s/www.example.org/article-with-amp-version"
    }
  ],
  "urlErrors": [
    {
      "errorCode": "NO_AMP_URL",
      "errorMessage": "AMP URL not found.",
      "originalUrl": "http://www.example.com/no-amp-version.html"
    }
  ]
}

ПРИМЕЧАНИЕ. AMP URL API не может извлекать адреса кешированных AMP-страницах из сторонних AMP-кешей. Тем не менее URL-адрес кешированной страницы легко можно сконструировать на основе полученной AMP-версии URL (ampURL).

Использование AMP-кешей

AMP-кеш — это основанная на проксировании сеть доставки контента (CDN), предоставляющая доступ к корректно сформированным AMP-документам.
AMP-кеши рассчитаны на то, чтобы:

  • Выдавать только корректно сформированные AMP-страницы.
  • Способствовать оперативной и безопасной предварительной загрузке AMP-страниц.
  • Дополнительно оптимизировать контент для повышения скорости его отображения на устройстве пользователя.

На данный момент существует два провайдера услуг AMP-кеширования:

Это значит, что есть два способа отобразить AMP-файл в приложении:

  1. использовать версию, размещенную издателем
  2. использовать версию, размещенную в AMP-кеше

Мы рекомендуем использовать AMP-кеш по следующим причинам:

  • Повышенный комфорт для пользователя благодаря более высокой скорости загрузки и более низкой задержке (загрузка происходит более чем на 1 с быстрее).
  • Повышенная производительность и снижение нагрузки на сеть благодаря дополнительному кешированию артефактов для различных типов клиентов (например, версий одного и того же изображения, оптимизированных под разные размеры области просмотра).
  • Оригинальный AMP-файл может перестать соответствовать требованиям к AMP-страницам, из-за чего у пользователя могут возникнуть проблемы. В такой ситуации AMP-кеш выдаст последнюю корректно сформированную версию AMP-файла.
  • Недобросовестные издатели могут выдавать разные документы в зависимости от того, откуда поступил запрос: от поискового бота AMP-кеша или от обычного пользователя. Использование AMP-кеша гарантирует, что пользователи увидят именно тот AMP-файл, который был кеширован.

ВАЖНО. При показе AMP-страницы с использованием AMP-кеша в средстве просмотра должен быть явно обозначен ее источник и должна присутствовать возможность поделиться ее каноническим URL-адресом (подробнее об этом читайте в двух следующих разделах).

Создание средств просмотра AMP

Среда выполнения AMP предоставляет предназначенный для средств просмотра API, который позволяет передавать сообщения между средой выполнения AMP и средством просмотра по специальному протоколу. Это дает возможность управлять предварительным рендерингом AMP-документов, переходом между статьями путем перелистывания пальцем, а также инструментированием среды выполнения AMP. Подробнее об API для средств просмотра AMP читайте в руководстве Подключение средств просмотра AMP к AMP-страницам. Реализации средств просмотра для веба и iOS доступны на GitHub. Средство просмотра для Android пока не доступно — см. этот ответ на Stack Overflow, чтобы узнать, как лучше всего настроить WebView для отображения AMP-страниц.

Вот несколько полезных советов по созданию средства просмотра AMP:

  • Показывайте AMP-страницу из кеша (загрузка происходит более чем на 1 с быстрее).
  • Отображайте информацию об издателе статьи (например, в сворачиваемом заголовке).
  • Предоставьте возможность поделиться страницей (см. также раздел Действие «Поделиться» для AMP-контента ниже).
  • Если средство просмотра основано на WebView, включите поддержку сторонних cookie-файлов.
  • Настройте URL перехода для вашей платформы/приложения.

Действие «Поделиться» для AMP-контента

Если интегрированное в платформу средство просмотра AMP предоставляет действие «Поделиться», такое действие должно отправлять канонический URL-адрес, когда это технически возможно.

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