Скажем, изображение встроено в веб-страницу, но оно не находится на сервере, не найдено, и сервер отвечает на запросы изображения с ошибкой 404.
Изображение не отображается на веб-странице, фактическое тело ответа HTTP не отображается. Вместо этого обычно отображается значок «сломанное изображение».
Я не знаю, зависит ли ответ на этот вопрос от типа сервера, ОС или других переменных ...
Создает ли сервер полный ответ 404 для встроенных файлов?
Если да, загружает ли браузер весь ответ?
Мысль, которая спровоцировала этот вопрос, возникла, когда я заметил, что у некоторых крупных CDN есть прозрачное ICO 1x1, где их /favicon.ico
идет, вместо того, чтобы ничего не иметь. Мысль в том, что это 64B
файл (в одном случае) меньше или требует меньше вычислительной мощности, чем ответ 404 ...
Не похоже, что какое-либо из полей заголовка HTTP имеет способ указать, что ресурс встроен, и если он 404, тело не требуется.
Создает ли сервер полный ответ 404 для встроенных файлов?
Да, это так. Как вы говорите, сервер не знает, встроенный ли это файл или отдельный запрос.
Если да, загружает ли браузер весь ответ?
Что ж, он загрузит полную страницу HTML 404, но не будет загружать какие-либо изображения или другие зависимые ресурсы на этой странице 404. Если вы откроете инструменты разработчика, вы увидите полный ответ HTML.
Мысль, которая спровоцировала этот вопрос, возникла, когда я заметил, что некоторые из крупных CDN имеют прозрачный ico 1x1, где находится их /favicon.ico, вместо того, чтобы не иметь ничего. Считается, что этот файл размером 64 Б (в одном случае) меньше или требует меньше вычислительной мощности, чем ответ 404 ...
Я этого не совсем понимаю. Хорошо, я понимаю, что файл в один пиксель будет меньше, чем 404, но если вы собираетесь создать небольшой файл favicon.ico, то почему бы не создать настоящий? Или вы говорите, что они создают файл favicon.ico по умолчанию, который вы затем можете заменить? Хорошо, наверное, для этого стоит сделать это.
Не похоже, что какое-либо из полей заголовка HTTP имеет способ указать, что ресурс встроен, и если он 404, тело не требуется.
Верный. В referer
Заголовок HTTP может указывать, поступил ли запрос с определенной страницы, но вы не знаете, потому ли это, что он был запрошен как часть загрузки страницы, или если кто-то щелкнул страницу правой кнопкой мыши и попросил просмотреть изображение как отдельный запрос.
В общем, я бы тратил больше времени на исправление ошибок 404, чем беспокоился об оптимизации размера ваших страниц 404. Самый простой способ избежать траты полосы пропускания на 404-е для встроенных ресурсов - убедиться, что у вас нет 404-х!
Кроме того, как упоминалось выше, загружается только HTML-код для страницы 404, поэтому, если у вас не слишком большой возраст 404 или вы не сжимаете его (с помощью gzip или brotli), его размер должен быть очень маленьким.
Возможно, как вы говорите, значок может быть исключением из этого совета, если вы размещаете сайты клиентов, поскольку он запрашивается для каждой отдельной страницы (если не найден и не кэширован), но для сайта, которым вы владеете и которым управляете, я бы не беспокоился об этом по указанным причинам.