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
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.
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).
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.
- 1. Ist es in Ordnung, mit() zu verwenden?
- 2. Spring-Data JPA CrudRepository gibt Iterable zurück, ist es in Ordnung, dies auf List zu übertragen?
- 3. Ist es in Ordnung, downcast?
- 4. Ist es in Ordnung, divs in einer Tabellenzelle zu verschachteln?
- 5. Ist es in Ordnung, UITableViewCells in einem Array zu speichern?
- 6. Ist es in Ordnung, Rendering in React zu delegieren?
- 7. Ist es in Ordnung, widersprüchliche Einschränkungen in Xcode zu ignorieren?
- 8. Ist es in Ordnung, einige IDs in HTML zu zeigen?
- 9. Ist es in Ordnung HTML in HTML-Attribute zu setzen?
- 10. ist es in Ordnung, Vektor in einem Destruktor zu löschen
- 11. Ist es in Ordnung, C++ anzupassen?
- 12. Ist es in Ordnung, 'void *' freizugeben?
- 13. Lasten von if's, ist es in Ordnung?
- 14. Ist es in Ordnung, AWT mit JavaFx zu verwenden?
- 15. Core Data Vererbung: Ist es in Ordnung, dies zu tun?
- 16. F #: Ist es in Ordnung, Theorembeweiser zu entwickeln?
- 17. Ist es in Ordnung, Objekte mit std :: for_each zu mutieren?
- 18. Ist es in Ordnung, Ruby 1.8.5 zu verwenden?
- 19. Ist es in Ordnung, `using` so zu verwenden?
- 20. GruntJS und imagemin, Ist es in Ordnung, 'src' zu überschreiben?
- 21. Ist es in Ordnung, Modernizr mit Twitter Bootstrap zu implementieren?
- 22. Ist es in Ordnung, Python 2.7 und 3.5 zu installieren?
- 23. Ist es in Ordnung, alte und neue Stilklassen zu erweitern?
- 24. Ist es in Ordnung, Destruktor als privat zu deklarieren?
- 25. Ist es in Ordnung, einen Std :: Bad_alloc manuell zu werfen?
- 26. Ist es in Ordnung, noch Tabellen zu verwenden?
- 27. Ist es in Ordnung, einen Fremdschlüssel als Primärschlüssel zu haben?
- 28. Ist es jemals in Ordnung, einen java.lang.Error zu werfen?
- 29. Ist es in Ordnung, PEPROCESS-Werte zu vergleichen?
- 30. Ist es in Ordnung, RabbitMQ `/` VHost zu löschen?
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