Ein SXG ist ein Übermittlungsmechanismus, der es ermöglicht, den Ursprung einer Ressource unabhängig von ihrer Übermittlung.
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.
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.
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="https://test.web.app/ViFgi0WfQ-NotPJf8PBo2T5dEuZ13NdZefPybXq_HhE"; date=1597680503;expires=1598285303;integrity="digest/mi-sha256-03";sig=<em>MEUCIQD5VqojZ1ujXXQaBt1CPKgJxuJTvFlIGLgkyNkC6d7LdAIgQUQ8lC4eaoxBjcVNKLrbS9kRMoCHKG67MweqNXy6wJg=</em>; validity-url="https://example.org/webpkg/validity" header integrity: sha256-Gl9bFHnNvHppKsv+bFEZwlYbbJ4vyf4MnaMMvTitTGQ=</p> <p>The exchange has a valid signature. payload [1256 bytes]:</p> <pre class="prettyprint"><code><title>SXG example</title> <meta charset="utf-8"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <style type="text/css"> body { background-color: #f0f0f2; margin: 0; padding: 0; } </style> </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.
![Screenshot mit einer SXG-Anfrage im Netzwerk in den Entwicklertools](https://web.developers.google.cn/static/articles/signed-exchanges/image/screenshot-showing-sxg-r-9a4f9df2440b3.png?authuser=8&hl=de)
Auf dem Tab Vorschau findest du weitere Informationen zum Inhalt eines SXG.
<ph type="x-smartling-placeholder">![Screenshot der „Vorschau“ Tab für einen SXG](https://web.developers.google.cn/static/articles/signed-exchanges/image/screenshot-the-preview-033e1253a3e1.png?authuser=8&hl=de)
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.
sxg-rs/cloudflare_worker
läuft auf Cloudflare Workers.sxg-rs/fastly_compute
läuft mit Fastly Compute@EdgeAutomatisch signiert Anzeigenplattformen sind ein Cloudflare-Funktion, die automatisch Zertifikate erwirbt und Signed Exchanges
NGINX SXG-Modul generiert und stellt SXGs für Websites bereit, die nginx nutzen. Einrichtung finden Sie hier.
Envoy SXG Filter generiert und liefert SXGs für Websites, Envoy:
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 dascloudflare_worker
- und dasfastly_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.