Можно ли перенаправлять изображения по HTTP?

Можно ли вернуть код 301/302/303 при возврате ресурса изображения? Я делал это в прошлом, и это похоже на работу. Это хорошая практика и совместима ли она с большинством браузеров?

Ответы на вопрос(3)

если код на самом деле отражает реальность - например, если изображение действительно постоянно перемещается, выдолжен использовать 301.

Решение Вопроса

вы можете перенаправлять изображения и браузеры будут следовать перенаправлениям. Но вы, как правило, захотите свести перенаправление к минимуму по соображениям производительности, поскольку для каждого перенаправления требуется отдельный HTTP-запрос, который увеличивает нагрузку на сервер и немного увеличивает время загрузки страницы конечного пользователя.

Единственное, чего вам следует избегать - это перенаправлять множество изображений на страницу. Это сильно замедлит время загрузки страницы, особенно в сетях с высокой задержкой (например, телефон, Китай, спутниковый Интернет), где каждый новый HTTP-запрос занимает много времени. Кроме того, HTTP-клиенты ограничены небольшим количеством одновременных HTTP-соединений на имя хоста сервера, поэтому даже в быстрых сетях вы столкнетесь с узким местом.

Перенаправление 1 или 2 изображений на странице, однако, не имеет большого значения.

Если вы перенаправляете изображения и они кешируются, в идеале вы должны установить заголовок HTTP Expires (и соответствующий заголовок Cache-Control) для даты в отдаленном будущем, чтобы, по крайней мере, при последующих посещениях страницы пользователи не имели снова пройти через редирект.

Если причина, по которой вы перенаправляете, состоит в том, чтобы соответствовать новой схеме URL, большинство веб-серверов имеют простой способ переписать URL-адреса на сервере без необходимости отправлять фактическое перенаправление обратно клиенту. Другими словами, клиент может запросить/static/bar.jpg но сервер может быть настроен на перевод этого в/media/images/bar.jpg, Этот подход перезаписи URL предпочтительнее перенаправления в большинстве случаев, так как вы можете выполнить рефакторинг того, где ваш контент находится на сервере, без дополнительных затрат на перенаправление на стороне клиента или сервера.

 J. M. Becker30 апр. 2013 г., 20:05
Я не защищаю ни 301-е, ни переписывание, так как это зависит от проекта, который предпочтительнее, но я хотел бы упомянуть дополнительное соображение по переписыванию. Перезаписи не являются бесплатными, они потребуют некоторой степени дополнительных ресурсов обработки. Во многих ситуациях это не является проблемой, поскольку общее потребление ресурсов соответствует сложности перезаписи и количеству выполнений. Я просто хотел убедиться, что все понимают, что оба метода имеют свои затраты, как и каждое потенциальное решение.
 Alex05 апр. 2019 г., 13:40
Просто хотел указать очень разумный вариант использования: перенаправление «локальных» образов в CDN

Что касается хорошей практики, какие есть альтернативы? Возвращать ответ об ошибке (404)? Не очень полезно. Вернуть изображение, которое будет возвращать перенаправленный ресурс? Вероятно, не возможно, иначе вы бы не перенаправили. Исправить теги img с новым URL? Конечно, где это возможно, но, возможно, вы хотите, чтобы браузер прошел тщательное перенаправление (возможно, счетчик).

Ваш ответ на вопрос