AMP zum Ausprobieren

Avatar of David Attard
David Attard am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Der folgende Text ist ein Gastbeitrag von David Attard von DART Creations. David wird uns AMP (keine Ahnung, was das ist? Lesen Sie weiter) vorstellen und wie Sie eine bestehende Website in eine AMP-Website umwandeln könnten. Tipp: Das bringt große Leistungsgewinne. AMP wird immer wichtiger. WordPress macht es. Ich habe von Google die Aufforderung bekommen, es zu tun und dass Analytics es unterstützt.

Wenn Sie das Interesse Ihrer Besucher im Auge behalten, wissen Sie, dass eine schnelle Website einer der Hauptfaktoren für eine gute Benutzererfahrung ist. Schnelle Websites tragen maßgeblich dazu bei, dass Ihre Nutzer zufrieden sind und wiederkommen. Entschlossene Website-Administratoren jagen immer nach diesen wenigen Millisekunden Geschwindigkeitsverbesserung.

Diese Millisekunden machen einen echten Unterschied.

Eine große neue Methode, um Ihre Website schnell zu machen, nennt sich Accelerated Mobile Pages (AMP), ein Projekt, das von Google angeführt wird. Mobile Daten sind anders als unsere heimischen WLAN-Verbindungen. Sie sind langsam. AMP zielt darauf ab, dies auf eine streng vorgeschriebene Weise zu beheben, indem die ineffizientesten Teile von Websites eliminiert werden.

Lassen Sie uns AMP ausprobieren!

Wir werden sehen, wie wir ein bestehendes Webdesign in AMP konvertieren können. Dann werden wir den Unterschied messen, den es macht.

Warum Accelerated Mobile Pages?

Telefone in Mobilfunknetzen haben typischerweise Latenz-Probleme.

Selbst bei einfachen Artikeln mit statischem Inhalt können Seiten lange brauchen, um den Text zu laden. Skripte, Bilder, Videos... all das dauert noch länger. Vielleicht kommen Anzeigen noch später herein, und die Seite passt sich an, um den neu geladenen Inhalt widerzuspiegeln. Nicht gerade eine angenehme Ladeerfahrung.

AMP möchte all das ändern. Verlage und Technologieunternehmen haben sich zusammengetan, um Best Practices zu etablieren, die Seiten schnell rendern lassen.

Dies ist ein nicht triviales Problem. Der anfängliche Fokus von AMP liegt auf statischem Inhalt, der radikalere Optimierungen ermöglicht.

Vorerst ist AMP ein Open-Source-Proof-of-Concept. Tatsächlich werden wir auf einige Einschränkungen stoßen, die zeigen, dass sich diese Technologie noch in den Kinderschuhen befindet.

Was macht AMP schneller als eine herkömmliche Website?

AMP hat sehr strenge Regeln für die Quelle, um die großen Geschwindigkeitssteigerungen zu erzielen, auf die es abzielt.

Die Grundprinzipien von AMP sind:

  1. Nur asynchrone Skripte. Nicht-asynchrone Skripte blockieren den DOM-Aufbau und verzögern das Rendern der Seite.

    Tatsächlich beschränkt AMP die Verwendung von JavaScript sogar. Skripte sind nur innerhalb benutzerdefinierter AMP-Elemente erlaubt, die sorgfältig für Leistung entwickelt wurden. Beispiele für benutzerdefinierte AMP-Skripte sind Google Analytics, Facebook, Twitter und YouTube.

    Drittanbieter-Skripte (wie Anzeigen oder Drittanbieterdienste) werden aus dem kritischen Pfad herausgehalten und sind nur in Iframes erlaubt. Auch dies blockiert nicht das Rendern der Seite.

    Mehr über Skripte später.

  2. Externe Ressourcen müssen feste Abmessungen haben. Dinge wie Bilder und Iframes benötigen Größenangaben, um sicherzustellen, dass AMP die Größe der Elemente kennt, bevor sie heruntergeladen werden.
  3. Lassen Sie nichts das Rendern blockieren. Einfach gesagt, nichts hindert AMP am Rendern. Externe Elemente sind in Iframes enthalten. AMP erstellt die Iframe-Box, ohne überhaupt zu wissen, was sie enthalten wird.
  4. CSS muss inline sein und eine Größenbeschränkung haben. AMP geht den umgekehrten Weg im Vergleich zur normalen Wahl, CSS in einer externen Datei zu verlinken. AMP erzwingt Inline-CSS aus demselben Grund wie Skripte: weil CSS das Rendern und das Laden der Seite blockiert.

    Es gibt ein Maximum von 50 Kilobytes Inline-CSS, um sicherzustellen, dass es effizient verwendet wird.

  5. Schriftart-Laden muss effizient sein. Webfonts können ziemlich groß sein und die Leistung stark beeinträchtigen. Unter normalen Umständen werden Browser am Herunterladen von Schriftarten gehindert, bis Skripte und Stylesheets heruntergeladen und bereit sind. Dies führt zu einer langen anfänglichen Wartezeit, bis der große Font-Download beginnt.

    In AMP ist CSS inline und Skripte sind asynchron. Der Browser muss also nicht auf deren Abschluss warten, bevor er die Schriftarten herunterlädt.

  6. Nur Animationen auf der GPU ausführen. Einige Animationen erfordern Seitenlayout-Updates, die vom Browser und nicht von der GPU durchgeführt werden. AMP beschränkt Animationen auf transform und opacity, damit keine Seitenlayout-Updates erforderlich sind und alle Animationen auf der GPU bleiben, wo sie schnell sind.
  7. Ressourcenladung wird priorisiert. AMP optimiert den Download von Ressourcen so, dass die wichtigsten Ressourcen zuerst heruntergeladen werden. Bilder werden nur heruntergeladen, wenn sie wahrscheinlich vom Benutzer gesehen werden.
  8. Seiten werden sofort geladen. Die PreConnect-API wird verwendet, um Ressourcen vorab abzurufen, zu rendern und herunterzuladen, die wahrscheinlich vom Benutzer verwendet werden. Dies geschieht effizient: Inhalte werden vorgerendert und nur heruntergeladen, wenn sie wahrscheinlich angefordert werden (z. B. Inhalte „above the fold“).

Die Teile von AMP

Es gibt eine Reihe von „Änderungen“ an Standard-HTML, CSS und JS, die Seiten, die mit AMP optimiert sind, einen Geschwindigkeits Schub verleihen.

  • AMP HTML: Dies sind HTML-Tags, erweitert um benutzerdefinierte AMP-Eigenschaften.
  • AMP JS: eine Bibliothek, die sicherstellt, dass AMP HTML-Seiten schnell gerendert werden.
  • AMP CDN: liefert die HTML AMP-Seiten über HTTP 2.0 für maximale Effizienz.

Die Schritte zur Konvertierung einer Seite in AMP

Da ich völlig neu bei AMP war, habe ich ihre empfohlene Checkliste befolgt.

Ich wollte mit einer bestehenden normalen (Nicht-AMP) Seite beginnen, also wählte ich einen Pen von CodePen: Example Article Layout von samyerkes.

  1. Fügen Sie das Attribut amp zum Tag hinzu.
    <html amp lang="en">
  2. Fügen Sie ein kanonisches Link-Element hinzu.
    <link rel="canonical" href="index.html">
  3. Änderte das Charset-Tag. Beachten Sie, dass dies anders ist als das ALL-CAPS UTF-8 und AMP empfindlich darauf reagiert.
    <meta charset="utf-8">
  4. Fügen Sie das Meta-Viewport-Tag hinzu.
    <meta name="viewport" content="width=device-width,minimum-scale=1">
  5. Fügen Sie das AMP Project CDN-Skript am Ende des <head> hinzu.
    <script async src="https://cdn.ampproject.org/v0.js"></script>
  6. Alle <img>-Tags wurden in <amp-img> geändert und die Attribute width und height hinzugefügt. Beispiel:
    <amp-img src="http://farm4.staticflickr.com/3595/3288866270_23cb40f37c_b.jpg" alt="Crashed plane vintage photo" height="1024" width="734"></amp-img> 

    Sie müssen diese Syntax verwenden, wenn Sie <amp-img>-Tags verwenden.

    • Es muss eine explizite width und height angegeben werden.
    • Es wird empfohlen, einen Platzhalter einzufügen. Der Platzhalter wird sofort angezeigt, sodass etwas Sichtbares da ist, bis die eigentliche Ressource geladen ist. Zum Beispiel könnten Sie eine Vorschau mit niedriger Auflösung eines Bildes laden, das gerade geladen wird.
      <amp-anim src="animated.gif" width=466 height=355 layout="responsive" >
        <amp-img placeholder src="preview.png" layout="fill"></amp-img>
      </amp-anim>
    • Optional: layout="responsive". Lesen Sie mehr über andere Layout-Optionen.
  7. Entfernte das <link> Stylesheet und inline CSS mit <style amp-custom>

Die Ergebnisse: Verbesserte Ladezeiten

Die Testumgebung bestand aus ein paar Subdomains, die auf einem SiteGround GoGeek Shared Hosting-Account erstellt wurden. Die Tests wurden mit GTMetrix und Pingdom durchgeführt und mehrmals wiederholt, um Schwankungen durch externe Umgebungen zu eliminieren.

Test 1: Kurzer Artikel

Der erste Test, den wir durchführten, erfolgte mit dem genauen Artikel wie im CodePen angegeben, wo der Artikel relativ kurz ist.

Example Article Layout (nativer HTML) Example Article Layout AMP
Test 1 3,3s, 1,17 MB, 8 Anfragen 1,7s, 1,18 MB, 5 Anfragen
Test 2 1,2s, 1,17 MB, 8 Anfragen 2,0s, 1,18 MB, 5 Anfragen
Test 3 1,3s, 1,17 MB, 8 Anfragen 1,0s, 1,18 MB, 5 Anfragen

Man kann einige Schwankungen erkennen. Wenn man sich den Wasserfallgraphen genau ansieht, wird man feststellen, dass die Schwankungen hauptsächlich vom AMP CDN stammen. Das ist leider eine Nebenwirkung der Nutzung einer gemeinsam genutzten Ressource, die unter Last geraten könnte.

Test 2: Dreifache Artikel-Länge und dreifach so viele Bilder

Example Article Layout (nativer HTML) Example Article Layout AMP
Test 1 1,1s, 2,3 MB, 14 Anfragen 1,6s, 1,18 MB, 5 Anfragen
Test 2 1,1s, 2,3 MB, 14 Anfragen 0,9s, 1,18 MB, 5 Anfragen
Test 3 2,3s, 2,3 MB, 14 Anfragen 1,1s, 1,18 MB, 5 Anfragen

Interpretation der Ergebnisse

Über die tatsächlichen Ladezeiten hinaus ist die *Anzahl* der Anfragen auf einer AMP-Seite geringer als auf einer normalen Seite. Das allein macht eine Seite schneller, da die Anzahl der Anfragen kleiner ist und somit weniger Latenz für das Warten entsteht (jede Anfrage unterliegt Latenz).

Auch die Gesamtgröße der Seite verringerte sich bei AMP-Seiten signifikant. Große Artikel mit vielen Bildern scheinen stärker von AMP zu profitieren.

In einem unserer frühen Tests haben wir einen relativ kurzen Artikel mit nur wenigen Bildern getestet. Dieser Test war nicht sehr aussagekräftig, also erhöhten wir den Einsatz. Im hier vorgestellten Test verdreifachten wir die Länge des Artikels und verdreifachten die Anzahl der Bilder. Interessanterweise stieg die Anzahl der Anfragen in der AMP-Version des Artikels nicht, obwohl wir die Anzahl der Bilder verdreifachten.

Soweit ich das verstehen kann, lädt AMP – neben der tatsächlichen Effizienz der AMP-Spezifikation – nur die Inhalte oberhalb der "Fold" (was erklärt, warum die Anzahl der Anfragen nach einer Verdreifachung der Bilder gleich blieb). Es lädt nur den ersten Teil des Artikels, den „Above the Fold“-Inhalt, und deshalb ist der Inhalt kürzer, kleiner und natürlich schneller.

Ein Wort zu <script>s

Wörtlich zitiert von der How It Works Seite:

Eine Sache, die wir früh erkannt haben, ist, dass viele Leistungsprobleme durch die Integration mehrerer JavaScript-Bibliotheken, Tools, Embeds usw. in eine Seite verursacht werden.

was bald gefolgt wird von

Mit diesem Wissen trafen wir die schwierige Entscheidung, dass AMP HTML-Dokumente keine vom Autor geschriebenen JavaScripts oder Skripte von Drittanbietern enthalten würden.

Meiner Meinung nach etwas drastisch.

Irgendetwas muss nachgeben, das verstehe ich. Erhöhte Leistung hat ihren Preis. Selbst bei der Optimierung normaler Websites für Leistung muss man Kompromisse eingehen.

Manchmal ist es die Bildqualität Ihrer Website. Hochwertige Bilder gehen zu Lasten großer Dateigrößen. Manchmal auf Kosten der Entfernung von Funktionalität. Manchmal auf Kosten der Entfernung von Skripten von Drittanbietern, wie z. B. sozialen Netzwerkintegrationen.

Sie werden immer einige schwierige Entscheidungen treffen müssen, basierend auf Ihren eigenen Prioritäten.

Skripte komplett zu eliminieren ist meiner Meinung nach etwas zu drastisch. Bibliotheken wie jQuery, Bootstrap, Angular, React... essentielle Bausteine der heutigen Webentwicklung.

Skripte komplett zu entfernen, schießt AMP ins eigene Bein. Es schießt AMP komplett vom Planeten in eine kleine Welt für sich allein.

Es wird nur dann praktisch, wenn Sie bereit sind, sehr ernsthafte Kompromisse bei der Funktionalität einzugehen, die Sie auf Ihren Webseiten haben möchten. Selbst im Bereich der Nachrichten-Websites, dem ursprünglichen Fokus von AMP, wird es einige schwierige Verkaufsgespräche geben.

Können wir erraten, wohin AMP geht?

Es sind noch frühe Zeiten, und es ist schwer, die Zukunft von AMP vorherzusagen. Ehrlich gesagt, ich möchte wirklich, dass AMP erfolgreich ist. Webseiten sind aufgebläht geworden, und der Leistung wird zu wenig Aufmerksamkeit geschenkt. Wir brauchen eine echte Anstrengung, um das Web schneller zu machen. HTTP/2 ist ein Schritt in die richtige Richtung. AMP auch.

Leider fühlt sich AMP durch den mangelnden Skript-Support beeinträchtigt. Ich hoffe, dass Webentwickler zusammenkommen, um eine faire Lösung zu finden, die das Web schnell hält und gleichzeitig die benötigte Funktionalität ermöglicht.

Das ist eine Einladung an Sie. Nehmen Sie sich Zeit, um am AMP-Projekt mitzuarbeiten. Wenn Sie nicht technisch genug sind, lesen Sie darüber und testen Sie es. Predigen Sie darüber und wecken Sie Interesse. Wer möchte nicht Teil eines besseren, schnelleren Webs für alle sein?

Wenn man Google schon eine Weile verfolgt, kann man erwarten, was Google tun könnte, um AMP einen Schub zu geben. Wir werden bald hören, dass AMP ein SEO-Ranking-Signal ist. Sie haben es hier zuerst gehört.

AMP Ressourcen