Signed Exchanges (SXGs)

Ein SXG ist ein Übermittlungsmechanismus, der es ermöglicht, den Ursprung einer Ressource unabhängig von ihrer Übermittlung.

Katie Hempenius
Katie Hempenius
Devin Mullins
Devin Mullins

Signed Exchange (SXG) ist ein Übermittlungsmechanismus, der es ermöglicht, den Ursprung einer Ressource unabhängig von der Zustellungsmethode zu authentifizieren. Die Implementierung von SXG kann den Largest Contentful Paint (LCP) verbessern, indem der datenschutzfreundliche ursprungsübergreifende Prefetch aktiviert wird. Darüber hinaus fördert diese Entkopplung eine Vielzahl von Anwendungsfällen, wie Offline-Internetnutzung und Bereitstellung über Drittanbieter-Caches.

Dieser Artikel bietet einen umfassenden Überblick über SXG: Funktionsweise, Anwendungsfälle und Tools.

Browserkompatibilität

SXG wird von Chromium-basierten Browsern unterstützt. (ab den Versionen Chrome 73, Edge 79 und Opera 64).

Übersicht

Als primären Anwendungsfall verwendet SXG einen Cache, um Inhalte, die vom Ursprung kryptografisch signiert wurden, vorab abzurufen und bereitzustellen. So wird die ursprungsübergreifende Navigation von Verweis-Websites beschleunigt. Gleichzeitig wird sichergestellt, dass die Seiten unverändert bleiben und ihrem Ursprung korrekt zugeordnet werden. Alle potenziell identifizierenden Informationen bleiben verborgen, bis die Nutzenden zu einer Website navigieren. Dadurch wird die Privatsphäre der Nutzenden geschützt. Die Google Suche gehört zu den ersten Nutzern der SXG-Vorabruffunktionen. Für Websites, die einen großen Teil ihrer Zugriffe über die Google Suche erhalten, kann SXG ein wichtiges Tool für schnelleres Laden von Seiten sein. Wir hoffen, dass sich diese Neuerung im Laufe der Zeit auf weitere Teilnehmer am Empfehlungsprogramm ausweiten wird.

So gehts

Eine Website signiert ein Anfrage/Antwort-Paar (einen "HTTP-Austausch") auf eine Weise, die es der Browser, um den Ursprung und die Integrität der Inhalte unabhängig von wie die Inhalte verbreitet wurden. Daher kann der Browser die URL von die Ursprungswebsite in der Adressleiste und nicht die URL des Servers, die Inhalte bereitgestellt haben.

Diagramm zur Funktionsweise von Signed Exchanges. Browser, der mit dem Cache kommuniziert, der mit der Zielwebsite kommuniziert

Historisch gesehen war die einzige Möglichkeit, ihre Inhalte über Dritte verbreiten zu können, dass die Website ihre SSL-Zertifikate mit dem Distributor. Dies hat Sicherheitsrisiken: Außerdem ist es noch viel mehr um Inhalte wirklich übertragbar zu machen.

Das SXG-Format

Ein SXG ist in einer binär codierten Datei gekapselt, die zwei Hauptkomponenten: HTTP-Austausch und signature für die Anzeigenplattform. Der HTTP-Austausch besteht aus einer Anfrage-URL, Verhandlungsinformationen und eine HTTP-Antwort.

Hier ist ein Beispiel für eine decodierte SXG-Datei.

format version: 1b3
request:
  method: GET
  uri: https://example.org/
  headers:
response:
  status: 200
  headers:
    Cache-Control: max-age=604800
    Digest: mi-sha256-03=kcwVP6aOwYmA/j9JbUU0GbuiZdnjaBVB/1ag6miNUMY=
    Expires: Mon, 24 Aug 2020 16:08:24 GMT
    Content-Type: text/html; charset=UTF-8
    Content-Encoding: mi-sha256-03
    Date: Mon, 17 Aug 2020 16:08:24 GMT
    Vary: Accept-Encoding
signature:
    label;cert-sha256=<em>ViFgi0WfQ+NotPJf8PBo2T5dEuZ13NdZefPybXq/HhE=</em>;
    cert-url=&quot;https://test.web.app/ViFgi0WfQ-NotPJf8PBo2T5dEuZ13NdZefPybXq_HhE&quot;;
    date=1597680503;expires=1598285303;integrity=&quot;digest/mi-sha256-03&quot;;sig=<em>MEUCIQD5VqojZ1ujXXQaBt1CPKgJxuJTvFlIGLgkyNkC6d7LdAIgQUQ8lC4eaoxBjcVNKLrbS9kRMoCHKG67MweqNXy6wJg=</em>;
    validity-url=&quot;https://example.org/webpkg/validity&quot;
header integrity: sha256-Gl9bFHnNvHppKsv+bFEZwlYbbJ4vyf4MnaMMvTitTGQ=</p>

<p>The exchange has a valid signature.
payload [1256 bytes]:</p>
<pre class="prettyprint"><code>&lt;title&gt;SXG example&lt;/title&gt;
&lt;meta charset=&#34;utf-8&#34;&gt;
&lt;meta http-equiv=&#34;Content-type&#34; content=&#34;text/html; charset=utf-8&#34;&gt;
&lt;style type=&#34;text/css&#34;&gt;
body {
    background-color: #f0f0f2;
    margin: 0;
    padding: 0;
}
&lt;/style&gt;
</code></pre>
<div>
    <h1>Hello</h1>
</div>

<p>

Der expires-Parameter in der Signatur gibt das Ablaufdatum eines SXG an. A SXG ist unter Umständen maximal 7 Tage lang gültig. Weitere Informationen zu den Signatur-Header in Signed HTTP Exchanges Spezifikation.

Unterstützung für serverseitige Personalisierung

Ein SXG mit einem Vary: Cookie-Header wird nur Nutzern angezeigt, die Cookies für die URL der signierten Anfrage haben. Wenn Ihre Website unterschiedlichen HTML-Code anzeigt angemeldet sind, kannst du mit dieser Funktion SXGs nutzen ohne das Erlebnis zu verändern. Weitere Informationen zur serverseitigen Personalisierung mit Dynamic SXG

Web-Paketerstellung

SXG ist Teil des größeren Web Spezifikationsangebotsfamilie „Paketerstellung“ Außerdem gegenüber SXGs sind die Web Bundles die andere wichtige Komponente der Spezifikation für Web Packaging. („gebündelte HTTP-Austauschdienste“). Web Bundles sind eine Sammlung von HTTP-Ressourcen die für die Interpretation des Sets erforderlichen Metadaten.

Die Beziehung zwischen SXGs und Web Bundles ist häufig verwirrend. SXG und Web Bundles sind zwei unterschiedliche Technologien, die nicht von beiden abhängen other: Web Bundles können sowohl mit signierten als auch mit nicht signierten Anzeigenplattformen verwendet werden. Eine gemeinsame Ziel sowohl bei SXGs als auch bei Web Bundles besteht darin, , mit dem Websites vollständig zur Offlinenutzung freigegeben werden können.

Seitenaufbau mit Signed Exchanges beschleunigen

Wenn Sie Signed Exchanges aktivieren, kann die Leistung von Webseiten beschleunigt und damit die Core Web Vitals Ihrer Website beeinträchtigt werden, insbesondere Largest Contentful Paint (LCP). Als einer der ersten Nutzer der Google Suche nutzt die Google Suche SXG, um Nutzern einen schnelleren Seitenaufbau für Seiten zu ermöglichen, die von der Suchergebnisseite aus geladen werden.

Die Google Suche crawlt und speichert SXGs, sofern verfügbar, und ruft SXGs im Voraus ab, die der Nutzer wahrscheinlich besuchen wird, z. B. die Seite, die dem ersten Suchergebnis entspricht.

SXG funktioniert am besten in Kombination mit anderen Leistungsoptimierungen wie der Verwendung von CDNs und der Reduzierung von Unterressourcen, die das Rendering blockieren. Folgen Sie nach der Implementierung diesen Empfehlungen, um den LCP-Vorteil durch den Vorabruf von SXGs zu maximieren. In vielen Fällen führt eine solche Optimierung dazu, dass die Seite nahezu sofort über die Google Suche geladen wird:

Auswirkungen von Signed Exchanges

In früheren Tests haben wir festgestellt, dass der LCP von SXG-fähigen Prefetches im Durchschnitt um 300 ms bis 400 ms reduziert wird. Dies trägt dazu bei, dass Websites einen besseren ersten Eindruck bei den Nutzern machen, und wirkt sich häufig positiv auf die Geschäftskennzahlen aus.

Mehrere globale Marken und Websites haben bereits von Signed Exchanges profitiert. Sehen wir uns als Fallstudie an, wie RebelMouse, ein bekanntes Content-Management-System (CMS), mithilfe von Signed Exchanges die Kundenzufriedenheit steigern konnte. Leistungs- und Geschäftsmesswerte:

  • Narcity verbesserte den LCP um 41%
  • Paper Magazine verzeichnete einen Anstieg der Sitzungen pro Nutzer um 27%
  • MLT-Blog verringerte die Seitenladezeit um 21%

Cloudflare stellte fest, dass SXG die TTFB für 98% der getesteten Websites und den LCP für 85% der Websites verbesserte, wobei der Medianwert für den Seitenaufbau, der für SXG geeignet ist, um mehr als 20% verbessert wurde.

Indexierung

Die SXG- und Nicht-SXG-Darstellungen einer Seite werden weder bewertet noch indexiert in der Google Suche. SXG ist letztendlich ein Übermittlungsmechanismus, den zugrunde liegenden Inhalt ändern.

AMP

AMP-Inhalte können mit SXG bereitgestellt werden. Mit SXG können AMP-Inhalte vorab abgerufen werden und wird unter Verwendung der kanonischen URL und nicht der AMP-URL angezeigt.AMP hat eine eigene separate Tools zum Generieren von SXGs.Hier erfährst du, wie du AMP mit Signed Exchanges auf amp.dev.

Fehler in SXGs mit den Chrome-Entwicklertools beheben

Wenn du einen SXG aus erster Hand sehen möchtest, öffne die Entwicklertools in einem Chromium-Browser, öffne das Steuerfeld „Netzwerk“ und rufe diese Beispielsuchseite auf. Sie können Signed Exchanges erkennen, indem Sie in der Spalte Type (Typ) nach signed-exchange suchen.

<ph type="x-smartling-placeholder">
</ph> Screenshot mit einer SXG-Anfrage im Netzwerk in den Entwicklertools
Im Bereich Netzwerk in den Entwicklertools

Auf dem Tab Vorschau findest du weitere Informationen zum Inhalt eines SXG.

<ph type="x-smartling-placeholder">
</ph> Screenshot der „Vorschau“ Tab für einen SXG
Tab Preview (Vorschau) in den Entwicklertools

Tools

Bei der Implementierung von SXGs wird der SXG generiert, der einer bestimmten URL entspricht und diesen SXG dann an Anforderer (normalerweise Crawler) bereitstellen.

Zertifikate

Zum Generieren eines SXG benötigst du ein Zertifikat, mit dem SXGs signiert werden können. Einige Tools erwerben dieses Zertifikat jedoch automatisch. Auf dieser Seite sind die Zertifizierungsstellen aufgeführt, die diese Art von Zertifikat ausstellen können. Zertifikate können mit jedem ACME-Client automatisch von der Google-Zertifizierungsstelle abgerufen werden. Der Web Packager-Server hat einen integrierten ACME-Client. sxg-rs wird es bald geben.

Plattformspezifische SXG-Tools

Diese Tools unterstützen bestimmte Technologie-Stacks. Wenn Sie bereits eine die von einem dieser Tools unterstützt wird, ist die Einrichtung einfacher ein universelles Tool.

Allzweck-SXG-Tools

sxg-rs-HTTP-Server

Das sxg-rs http_server agiert als Reverse-Proxy für für SXGs entwickelt. Bei Anfragen von SXG-Crawlern signiert http_server den und mit einem SXG antworten. Zur Installation finden Sie auf der README-Datei.

Web Packager-Server

Web Packager Server, webpkgserver ist eine Alternative zum sxg-rs-http_server, der in Go geschrieben wurde. Für Anweisungen zum Einrichten des Web Packager-Servers finden Sie unter So richten Sie signierte mit Web Packager verwalten.

Web Packager-Befehlszeile

Die Web Packager-Befehlszeile generiert einen SXG. die einer bestimmten URL entspricht.

webpackager \
    --private\_key=private.key \
    --cert\_url=https://example.com/certificate.cbor \
    --url=https://example.com

Sobald die SXG-Datei generiert ist, laden Sie sie auf Ihren Server hoch und stellen Sie sie mit den MIME-Typ application/signed-exchange;v=b3. Außerdem müssen Sie das SXG-Zertifikat als application/cert-chain+cbor bereitstellen.

SXG-Bibliotheken

Mit diesen Bibliotheken kannst du deinen eigenen SXG-Generator erstellen:

  • sxg_rs ist eine Rust-Bibliothek für zur Erstellung von SXGs. Es ist die funktionsreichste SXG-Bibliothek und wird als Basis für das cloudflare_worker- und das fastly_compute-Tool.

  • libsxg ist eine minimale C-Bibliothek für zur Erstellung von SXGs. Es wird als Grundlage für das NGINX SXG-Modul und den Envoy-SXG-Filter.

  • go/signed-exchange ist eine minimale Go-Bibliothek, die von der Webpackage-Spezifikation als Referenz Implementierung von zur Erstellung von SXGs. Es wird als Basis für sein Referenz-CLI-Tool verwendet. gen-signedexchange und die leistungsfähigeren Web Packager-Tools.

Inhalte verhandeln

Server sollten SXG bereitstellen, wenn der Accept-Header anzeigt, dass der q-Wert für Application/Signed-Exchange größer oder gleich dem q-Wert für text/html ist. In der Praxis bedeutet das, dass ein Ursprungsserver SXG für Crawler bereitstellt, nicht aber für Browser. Bei vielen der oben genannten Tools ist dies standardmäßig der Fall. Bei anderen Tools kann jedoch der folgende reguläre Ausdruck verwendet werden, um den „Accept“-Header von Anfragen abzugleichen, die als SXG bereitgestellt werden sollen: http Accept: /(^|,)\s\*application\/signed-exchange\s\*;\s\*v=[[:alnum:]\_-]+\s\*(,|$)/

Diese Empfehlung enthält Beispiele für Apache und nginx.

Cache-API aktualisieren

Der Google SXG Cache hat eine API, mit der Websiteinhaber SXGs aus dem Cache entfernen können, bevor sie aufgrund von Cache-Control: max-age abgelaufen sind. Weitere Informationen finden Sie in der Update Cache API-Referenz.

Mit SXG verknüpfen

Jede Website kann die SXGs der mit ihr verknüpften Seiten mithilfe der Tags und im Cache speichern, bereitstellen und vorab abrufen, sofern verfügbar: html <a href="https://example.com/article.html.sxg"> <link rel="prefetch" as="document" href="https://example.com/article.html.sxg"> In diesem Artikel wird gezeigt, wie SXGs mit nginx verteilt werden.

Einzigartige Vorteile

SXG ist eine von vielen Technologien für den ursprungsübergreifenden Vorabruf. Bei der Auswahl der richtigen Technologie müssen Sie möglicherweise Abwägungen zwischen den verschiedenen Aspekten der Optimierung treffen. In den folgenden Abschnitten werden einige der besonderen Werte beschrieben, die SXG im Hinblick auf mögliche Lösungen bietet. Diese Faktoren können sich im Laufe der Zeit ändern, wenn sich die verfügbaren Lösungen weiterentwickeln.

Weniger Anfragen zur Auslieferung

Beim websiteübergreifenden Vorabruf muss Ihr Server möglicherweise zusätzliche Anfragen verarbeiten. Das ist der Fall, wenn eine Seite vorab abgerufen wurde, aber entweder der Nutzer die Seite nicht besucht hat oder die vorabgerufenen Bytes dem Nutzer nicht angezeigt werden konnten. Für SXG können diese zusätzlichen nicht verwendeten Anfragen erheblich reduziert werden:

  • SXGs werden im Cache gespeichert und können an Nutzer gesendet werden, bis sie ablaufen. Daher können viele Prefetches ausschließlich vom Cache-Server verarbeitet werden.
  • SXGs können Nutzern mit und ohne Cookies auf Ihrer Website angezeigt werden. Auf diese Weise muss die Seite nach der Navigation seltener abgerufen werden.

Verbesserung der Ladegeschwindigkeit

Aufgrund der derzeit unterstützten Prefetch-Oberflächen und -Funktionen kann sich die Geschwindigkeit der Seite noch weiter verbessern:

  • SXGs können Nutzern mit Cookies für Ihre Website angezeigt werden.
  • SXG ruft auch Unterressourcen für deine Seiten vorab ab, z. B. JavaScript, CSS, Schriftarten und Bilder, wenn diese in einem Link-Header angegeben sind.
  • In naher Zukunft wird der Vorabruf von SXG aus der Google Suche für weitere Suchergebnistypen verfügbar sein.

Fazit

Signed Exchanges sind ein Übermittlungsmechanismus, der es ermöglicht, Ursprung und Gültigkeit einer Ressource unabhängig davon, wie die Ressource geliefert wurden. So können SXGs von Drittanbietern vertrieben werden, und die vollständige Publisher-Attribution beibehalten.

Weitere Informationen