2010-09-23 4 views
36

Ist es OK, einen 301/302/303-Code zurückzugeben, wenn eine Bildressource zurückgegeben wird? Ich habe das in der Vergangenheit getan und es scheint zu funktionieren. Ist es eine gute Übung und ist es mit den meisten Browsern kompatibel?Ist es in Ordnung, HTTP-Redirect-Bilder zu übertragen?

Antwort

40

verwenden, können Sie Bilder umleiten können und Browser werden Umleitungen folgen. Im Allgemeinen sollten Sie die Umleitung aus Performance-Gründen auf ein Minimum beschränken, da für jede Weiterleitung eine separate HTTP-Anforderung erforderlich ist, die den Server-Overhead erhöht und die Ladezeit der Endbenutzer etwas erhöht.

Die eine Sache, die Sie auf jeden Fall vermeiden sollten, ist die Umleitung vieler Bilder auf einer Seite. Dies wird die Seitenladezeit stark verlangsamen, insbesondere bei Netzwerken mit hoher Latenzzeit (z. B. Telefon, China, Satelliteninternet), wo jede neue HTTP-Anfrage eine lange Zeit benötigt. Außerdem sind HTTP-Clients auf eine kleine Anzahl von gleichzeitigen HTTP-Verbindungen pro Server-Hostnamen beschränkt, sodass selbst in schnellen Netzwerken ein Engpass entsteht.

Die Umleitung von 1 oder 2 Bildern auf einer Seite ist jedoch keine große Sache.

Wenn Sie Bilder umleiten und sie cachefähig sind, sollten Sie idealerweise einen HTTP Expires-Header (und den entsprechenden Cache-Control-Header) für ein Datum in ferner Zukunft festlegen, also zumindest bei späteren Besuchen der Seitenbenutzer muss nicht erneut durch die Weiterleitung gehen.

Wenn der Grund für die Weiterleitung ein neues URL-Schema ist, haben die meisten Webserver eine einfache Möglichkeit zum Umschreiben von URLs auf dem Server, ohne dass eine tatsächliche Weiterleitung an den Client gesendet werden muss. Mit anderen Worten, der Client kann /static/bar.jpg anfordern, aber der Server kann so konfiguriert werden, dass er dies in /media/images/bar.jpg übersetzt. Dieser URL-Umschreibungsansatz ist in den meisten Fällen der Umleitung vorzuziehen, da Sie den Inhalt Ihres Contents auf dem Server umgestalten können, ohne den Umleitungsaufwand auf der Client- oder Serverseite zu verursachen.

+0

Ich befürworte weder 301 noch schreibt man neu, da es dem Projekt vorzuziehen ist, aber ich wollte eine zusätzliche Überarbeitung erwähnen. Umschreibungen sind nicht kostenlos, sie erfordern zusätzliche Verarbeitungsressourcen. In vielen Situationen ist dies kein Problem, da der gesamte Ressourcenverbrauch der Neuschreibungs-Komplexität und der Anzahl der Ausführungen entspricht. Ich wollte nur sicherstellen, dass jeder versteht, dass beide Methoden ihre Kosten haben, ebenso wie jede mögliche Lösung. – TechZilla

6

Ja, es funktioniert.

Über die gute Praxis, was sind die Alternativen? Zurückgeben einer Fehlerantwort (404)? Nicht sehr hilfreich. Zurückgeben des Bildes, das die umgeleitete Ressource zurückgeben würde? Wahrscheinlich nicht möglich, sonst würde man nicht umleiten. Die IMG-Tags mit der neuen URL reparieren? Sicher, wo möglich, aber vielleicht möchten Sie, dass der Browser die Umleitung gründlich durchgeht (vielleicht ein Zähler).

6

Es ist in Ordnung, wenn der Code Realität tatsächlich widerspiegelt - zum Beispiel, wenn ein Bild in der Tat permanenetly bewegt hat, Sie sollte ein Ja 301.

Verwandte Themen