Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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