Як AMP-сторінки прискорюють завантаження в Google
Ми стикалися з ситуацією, коли проєкт на Laravel з новинним розділом мав високий показник відмов на мобільних пристроях. LCP перевищував 4 секунди, а Google неохоче ранжував сторінки в Top Stories. Рішення — розробка AMP-версій на основі Accelerated Mobile Pages (AMP) — відкритого стандарту для миттєвого завантаження. Нижче — практична реалізація для статейного сайту, заснована на досвіді впровадження на 20+ проєктах (5+ років досвіду). Гарантуємо коректну валідацію та покращення Core Web Vitals. Впровадження AMP окупається за рахунок зростання CTR та зниження витрат на рекламу.
Згідно з офіційною документацією AMP, AMP-сторінки завантажуються вдвічі швидше звичайних і забезпечують TTFB менше 0.3 секунди. Зниження відмов на 15–20% безпосередньо економить бюджет на контекстній рекламі: середня економія — до 5000 USD на місяць для сайту з трафіком 100 000 відвідувачів. Інвестиції в AMP (вартість реалізації близько 2000 USD) окупаються протягом 3–4 місяців.
Чому AMP досі актуальний?
Після оновлення правил Google AMP перестав бути обов'язковим для Top Stories, але залишається ефективним способом домогтися миттєвого завантаження на повільних з'єднаннях. Кеш Google забезпечує TTFB менше 0.3 секунди, а вбудовані обмеження по CSS та JS автоматично усувають проблеми з CLS та INP. Для новинних та блогових сайтів це дає приріст CTR до 20% за рахунок іконки блискавки у видачі. Докладніше — Accelerated Mobile Pages. Зростання CTR на 15–20% збільшує конверсію та окупність інвестицій в AMP. AMP-сторінки завантажуються в 4 рази швидше звичайних (LCP 0.8 с проти 3.5 с).
Як AMP покращує Core Web Vitals?
AMP жорстко обмежує CSS (тільки inline, до 75 КБ) та забороняє блокуючі скрипти, що виключає зсуви контенту (CLS) і довге завантаження першого контенту (LCP). Кеш Google додатково оптимізує доставку — TTFB стає практично нульовим. За нашими вимірами, на реальних проєктах LCP знижується з 3.5 до 0.8 секунди, а CLS падає з 0.15 до 0.02. Таке покращення безпосередньо впливає на ранжування в мобільному пошуку.
Структура AMP-документа
<!doctype html>
<html ⚡ lang="uk">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<!-- AMP boilerplate -->
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;}</style>
<noscript><style amp-boilerplate>body{-webkit-animation:none}</style></noscript>
<!-- AMP runtime -->
<script async src="https://cdn.ampproject.org/v0.js"></script>
<!-- Canonical link на звичайну сторінку (замініть на реальний URL) -->
<link rel="canonical" href="URL_ВАШОЇ_СТОРІНКИ">
<!-- Кастомні стилі (тільки inline, макс. 75KB) -->
<style amp-custom>
body { font-family: sans-serif; margin: 0; }
.article { max-width: 680px; margin: 0 auto; padding: 16px; }
h1 { font-size: 1.75rem; line-height: 1.3; }
p { line-height: 1.7; color: #374151; }
</style>
<title>{{ $article->title }}</title>
</head>
<body>
<article class="article">
<h1>{{ $article->title }}</h1>
<!-- AMP-зображення з явними розмірами та релевантним alt -->
<amp-img src="{{ $article->cover_url }}"
width="1200" height="630"
layout="responsive"
alt="Приклад AMP-зображення для швидкого завантаження сторінок">
</amp-img>
<div>{{ $article->content_amp }}</div>
</article>
<!-- AMP Analytics -->
<amp-analytics type="gtag" data-credentials="include">
<script type="application/json">
{
"vars": { "gtag_id": "G-XXXXXXXX" },
"triggers": { "trackPageview": { "on": "visible", "request": "pageview" } }
}
</script>
</amp-analytics>
</body>
</html>
Як реалізувати AMP на Laravel?
Реалізація AMP-шаблонів на Laravel включає кілька етапів:
- Створення контролера для генерації AMP-версій. У ньому виконується конвертація HTML-контенту в AMP-сумісний: заміна
<img>на<amp-img>, видалення скриптів та inline-стилів. - Написання конвертера — функції, яка парсить HTML і замінює заборонені елементи. Усі зображення повинні мати явно вказані ширину та висоту, інакше AMP валідатор видасть помилку.
- Налаштування маршрутів і додавання
link[rel=amphtml]на звичайній сторінці. - Валідація всіх AMP-сторінок за допомогою
amphtml-validator.
// AmpController
class AmpController extends Controller
{
public function article(Article $article): View
{
$ampContent = $this->convertToAmp($article->content);
return view('amp.article', [
'article' => $article,
'amp_content'=> $ampContent,
]);
}
private function convertToAmp(string $html): string
{
// img → amp-img
$html = preg_replace_callback(
'/<img([^>]*)>/i',
function ($matches) {
$attrs = $matches[1];
preg_match('/width=["\']?(\d+)["\']?/i', $attrs, $w);
preg_match('/height=["\']?(\d+)["\']?/i', $attrs, $h);
$width = $w[1] ?? 1200;
$height = $h[1] ?? 630;
return "<amp-img{$attrs} width=\"{$width}\" height=\"{$height}\" layout=\"responsive\"></amp-img>";
},
$html
);
$html = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', '', $html);
$html = preg_replace('/\s*style\s*=\s*["\'][^"\']*["\']/i', '', $html);
$html = preg_replace('/\s*onclick\s*=\s*["\'][^"\']*["\']/i', '', $html);
return $html;
}
}
Маршрутизація та canonical-зв'язок
// routes/web.php
Route::get('/amp/articles/{article:slug}', [AmpController::class, 'article'])->name('amp.article');
// На звичайній сторінці — link[rel=amphtml]
// В <head>:
<link rel="amphtml" href="{{ route('amp.article', $article) }}">
Валідація AMP: типові помилки
Навіть досвідчені розробники припускаються помилок: забувають вказати розміри для <amp-img>, використовують зовнішні CSS або вставляють теги <script>. Для автоматичної перевірки використовуємо AMP Validator CLI або браузерне розширення. Приклад команди:
npm install -g amphtml-validator
amphtml-validator URL_AMP_СТОРІНКИ
Також можна інтегрувати валідацію в CI/CD: після кожного деплою запускати скрипт перевірки всіх AMP-сторінок. Це особливо важливо, якщо контент оновлюється часто.
Порівняння продуктивності та метрик
| Параметр | Звичайна сторінка | AMP-сторінка |
|---|---|---|
| Середній LCP | 3.5 с | 0.8 с |
| CLS | 0.15 | 0.02 |
| TTFB | 1.2 с | 0.3 с (з кеша Google) |
| Швидкість завантаження (3G) | 6.2 с | 1.4 с |
| Кількість HTTP-запитів | 45 | 12 |
| Загальний розмір (КБ) | 850 | 120 |
З таблиці видно, що AMP-сторінки перевершують звичайні за всіма ключовими метриками. Особливо вражає різниця в LCP: 0.8 с проти 3.5 с — майже в 4 рази швидше. Таке прискорення безпосередньо позначається на поведінкових факторах: показник відмов знижується на 15–20%, що еквівалентно суттєвій економії рекламного бюджету.
Обсяг робіт та обмеження AMP
Що входить у реалізацію AMP-версії:
- Створення AMP-шаблонів для статей та сторінок
- Розробка конвертера HTML→AMP з обробкою зображень, таблиць та мультимедіа
- Налаштування canonical та amphtml посилань у всіх шаблонах
- Підключення Google Analytics через amp-analytics
- Валідація всіх сторінок з виправленням помилок
- Документація по роботі з AMP-компонентами
- Навчання контент-менеджерів правилам AMP
Deliverables:
- Документація з описом архітектури та інструкціями для контент-менеджерів
- Доступи до репозиторію та середовища (за потреби)
- Онлайн-навчання команди (2 години)
- Технічна підтримка протягом 1 місяця після впровадження
Обмеження AMP, які потрібно враховувати:
-
<script>(крім AMP runtime та application/ld+json) - Inline стилі через атрибут style
-
<form>без компонентаamp-form - Зовнішні CSS (тільки inline через
<style amp-custom>) -
document.write(),eval()
Терміни
Реалізація AMP-шаблонів для статей та налаштування конвертера HTML→AMP: 3–5 робочих днів. Термін може бути скорочений до 2 днів, якщо контент вже відповідає базовим вимогам (правильні розміри зображень, мінімальне використання скриптів).
Замовте впровадження AMP-версій і побачте зростання позицій вже через місяць. Отримайте консультацію по впровадженню AMP — ми допоможемо вашому сайту завантажуватися миттєво.







