Czy można przekierować obrazy HTTP?

Czy można zwrócić 301 / 302 / 303 kod podczas zwracania zasobu obrazu? Robiłem to w przeszłości i wydaje się, że działa. Czy jest to dobra praktyka i jest kompatybilny z większością przeglądarek?

Author: Joe, 2010-09-23

3 answers

Tak, możesz przekierowywać obrazy, a przeglądarki będą podążać za przekierowaniami. Ale generalnie będziesz chciał ograniczyć przekierowanie do minimum ze względu na wydajność, ponieważ każde przekierowanie wymaga osobnego żądania HTTP, które dodaje obciążenie serwera i wydłuża trochę Czas ładowania strony Użytkownika Końcowego.

Jedyną rzeczą, której zdecydowanie powinieneś unikać, jest przekierowywanie wielu obrazów na stronę. To znacznie spowolni czas ładowania strony, szczególnie w sieciach o dużym opóźnieniu (np. telefon, Chiny, Internet satelitarny) gdzie każde nowe żądanie HTTP zajmuje dużo czasu. Ponadto klienci HTTP są ograniczeni do niewielkiej liczby jednoczesnych połączeń HTTP na nazwę hosta serwera, więc nawet w szybkich sieciach skończysz z wąskim gardłem.

Przekierowanie 1 lub 2 obrazów na stronie nie jest jednak wielką sprawą.

Jeśli przekierujesz obrazy i są one buforowalne, najlepiej ustawić nagłówek HTTP Expires (i odpowiedni nagłówek Cache-Control) Dla daty w odległej przyszłości, więc przynajmniej przy kolejnych wizytach do użytkownicy Strony nie będą musieli ponownie przechodzić przez przekierowanie.

Jeśli powodem przekierowania jest zgodność z nowym schematem URL, większość serwerów internetowych ma łatwy sposób na przepisanie adresów URL na serwerze bez konieczności wysyłania rzeczywistego przekierowania z powrotem do klienta. Innymi słowy, klient może zażądać /static/bar.jpg, ale serwer może być skonfigurowany tak, aby przetłumaczyć to na /media/images/bar.jpg. To podejście do przepisywania adresów URL jest w większości przypadków lepsze niż przekierowanie, ponieważ możesz zmienić miejsce, w którym znajduje się Twoja treść serwera bez ponoszenia kosztów przekierowania po stronie klienta lub serwera.

 41
Author: Justin Grant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-23 12:58:00

Tak, to działa.

O byciu dobrą praktyką, jakie są alternatywy? Zwracanie odpowiedzi na błąd (404) Niezbyt pomocne. Zwracanie obrazu, który przekierowany zasób zwróci? Prawdopodobnie nie jest to możliwe, w przeciwnym razie nie przekierowywałbyś. Naprawianie znaczników img z nowym adresem URL? Oczywiście, jeśli to możliwe, ale może chcesz, aby przeglądarka przeszła dokładnie przekierowanie(może licznik).

 6
Author: Thilo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-23 12:33:21

Jest OK, jeśli kod rzeczywiście odzwierciedla rzeczywistość - na przykład, jeśli obraz rzeczywiście przeniósł się na stałe, powinieneś użyć 301.

 6
Author: Oded,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-23 12:34:09