HTTPQUERY
Deutsch

226 IM Used

Verwendung

Eine 226-IM-Used-Antwort teilt dem Client mit, dass der Body eine veränderte Fassung der Ressource enthält und nicht die vollständige Repräsentation. Ein verbreiteter Anwendungsfall ist Delta-Encoding, bei dem nur die Unterschiede zwischen der zwischengespeicherten und der aktuellen Fassung übertragen werden, was Bandbreite einspart.

Der Server wendet die Instance Manipulations an, für die der Client über den A-IM-Anfrage-Header Unterstützung erklärt hat. Akzeptierte Manipulationen werden in einer einzelnen kommagetrennten Zeile oder über mehrere Zeilen hinweg aufgeführt.

Caching

Eine 226-IM-Used-Antwort folgt den Delta-Caching-Regeln, die in ihrer eigenen Spezifikation definiert sind, und nicht der üblichen Liste für heuristisches Caching. Die Antwort lässt sich zusammen mit einer zwischengespeicherten Basisinstanz verwenden, um einen Cache-Eintrag für die aktuelle Instanz zu erzeugen; vorhandene Cache-Control-Direktiven gelten dabei weiterhin.

Die unveränderte aktuelle Instanz ist nicht immer direkt verfügbar. Für die Rekonstruktion der vollständigen Ressource muss die 226-Antwort mit einer zuvor zwischengespeicherten Basisinstanz kombiniert werden, geleitet von den Instance Manipulations, die der Server angewendet hat.

Beispiel

Der Client startet mit einem leeren Cache und fordert eine PDF-Datei an. Der Accept-Encoding-Header signalisiert Unterstützung für gzip-Komprimierung. Der Server antwortet mit der vollständigen gzip-kodierten Datei und dem Status 200.

Bei der nächsten Anfrage prüft der Client, ob sich das Dokument geändert hat, indem er den ETag-Wert aus der ersten Antwort in einem If-None-Match-Header sendet. Zusätzlich erklärt der Client über den A-IM-Header Unterstützung für vcdiff-Delta-Encoding.

Der Server erkennt, dass sich die Ressource seit dem ursprünglichen ETag geändert hat, und erzeugt eine Delta-Datei. Eine unveränderte Ressource führt stattdessen zu einer 304. Der Delta-Base-Header in der Antwort gibt an, gegen welche zwischengespeicherte Fassung das Delta berechnet wurde. Der IM-Header listet die angewendeten Instance Manipulations auf.

Anfrage

GET /livingdocs/current_specs.pdf HTTP/1.1
Host: example.com
Accept-Encoding: gzip

Antwort

HTTP/1.1 200 OK
ETag: "1234-000"
Content-Encoding: gzip

<gzip-compressed file>

Anfrage (nachfolgend)

GET /livingdocs/current_specs.pdf HTTP/1.1
Host: example.com
If-None-Match: "1234-000"
Accept-Encoding: gzip
A-IM: vcdiff

Antwort (Delta)

HTTP/1.1 226 IM Used
ETag: "1234-111"
Delta-Base: "1234-000"
Content-Encoding: gzip
IM: vcdiff

<gzip-compressed delta file>

Code-Referenzen

.NET

HttpStatusCode.IMUsed

Rust

http::StatusCode::IM_USED

Rails

:im_used

Go

http.StatusIMUsed

Symfony

Response::HTTP_IM_USED

Python3.5+

http.HTTPStatus.IM_USED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_IM_USED

Angular

@angular/common/http/HttpStatusCode.ImUsed