Как выглядит ответ 404 для встроенных файлов

Скажем, изображение встроено в веб-страницу, но изображение не находится на сервере, не найдено, и сервер отвечает на запросы изображения с ошибкой 404.

Изображение не отображается на веб-странице, фактическое тело ответа HTTP не отображается. Вместо него обычно отображается значок "сломанного изображения".

Я не знаю, зависит ли ответ на этот вопрос от типа сервера, ОС или других переменных...

Генерирует ли сервер полный ответ 404 для встроенных файлов?
Если да, то загружает ли браузер весь ответ?

Мысль, вызвавшая этот вопрос, возникла, когда я заметил, что некоторые крупные CDN имеют прозрачный 1x1 ico там, где находится их /favicon.ico, вместо того, чтобы не иметь ничего. Предполагается, что этот 64B файл (в одном случае) меньше или требует меньше вычислительной мощности, чем ответ 404...

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

0
задан 17 January 2018 в 06:59
1 ответ

Создает ли сервер полный ответ 404 для встроенных файлов?

Да, делает. Как вы говорите, сервер не знает, встроенный ли это файл или отдельный запрос.

Если это так, загружает ли браузер весь ответ?

Хорошо, он загрузит полную страницу HTML 404 - но он не будет загружать изображения или другие зависимые ресурсы на этой странице 404. Если вы откроете инструменты разработчика, вы увидите полный ответ в формате HTML.

Мысль, вызванная этим вопросом, возникла, когда я заметил, что у некоторых крупных CDN есть прозрачный ico 1x1 вместо их /favicon.ico, а не ничего. Мысль в том, что этот файл размером 64 байт (в одном случае) меньше или требует меньше вычислительной мощности, чем ответ 404 ...

Я этого не совсем понимаю. Хорошо, я понимаю, что однопиксельный файл будет меньше, чем 404, но если вы собираетесь создать небольшой файл favicon.ico, то почему бы не создать настоящий? Или вы говорите, что они создают файл favicon.ico по умолчанию, который вы затем можете заменить? Хорошо, возможно, для этого стоит сделать это.

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

]Верный. HTTP-заголовок referer может указывать, поступил ли запрос с определенной страницы, но вы не знаете, потому что он был запрошен как часть загрузки страницы, или если кто-то щелкнул правой кнопкой мыши по странице и спросил чтобы просмотреть изображение как отдельный запрос.

В общем, я бы тратил больше времени на исправление ошибок 404, чем беспокоился об оптимизации размера ваших страниц 404. Самый простой способ избежать траты полосы пропускания на 404-е для встроенных ресурсов - убедиться, что у вас нет 404-х!

Кроме того, как упоминалось выше, загружается только HTML-код для страницы 404, поэтому, если у вас нет смехотворно большого 404 возраста, или не сжимайте его (с помощью gzip или brotli), то размер должен быть очень маленьким.

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

0
ответ дан 5 December 2019 в 06:48

Теги

Похожие вопросы