Это нормально, чтобы HTTP перенаправить изображения?

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

3 ответа

Решение

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

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

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

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

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

Да, это работает.

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

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

Другие вопросы по тегам