Современные браузеры имеют реализацию HTTP Protocol , идеально подходящую к стандарту, то же самое для прокси-серверов, которые следует учитывать, если вы хотите влиять на пользователя и неумышленного бота. -движение. Текущая версия - 1.1 , некоторые выдержки:
10.4 Ошибка клиента 4xx
Класс кода состояния 4xx предназначен для случаев, когда клиент, похоже, допустил ошибку. За исключением случаев ответа на запрос HEAD, сервер ДОЛЖЕН включать объект, содержащий объяснение ситуации с ошибкой, и является ли это временным или постоянным условием. Эти коды состояния применимы к любому методу запроса. Пользовательские агенты ДОЛЖНЫ отображать любую включенную сущность пользователю.
Если клиент отправляет данные, серверная реализация, использующая TCP, ДОЛЖНА быть осторожной, чтобы убедиться, что клиент подтверждает получение пакета (ов), содержащего ответ, до того, как сервер закроет входное соединение. Если клиент продолжает отправлять данные на сервер после закрытия, стек TCP сервера отправит клиенту пакет сброса, который может стереть неподтвержденные входные буферы клиента, прежде чем они будут прочитаны и интерпретированы приложением HTTP.
Более конкретно для 404:
10.4.5 404 Не найдено
Сервер не нашел ничего, соответствующего Request-URI. Не указано, является ли состояние временным или постоянным. Код состояния 410 (Унесенные) СЛЕДУЕТ использовать, если сервер через некоторый внутренне конфигурируемый механизм знает, что старый ресурс постоянно недоступен и не имеет адреса пересылки. Этот код состояния обычно используется, когда сервер не хочет точно указывать, почему запрос был отклонен, или когда другой ответ не применим.
Вот вам и код ответа 404.
Вы спросили:
теперь [нам] интересно, если ресурсы, которые мы НЕКОТОРЫЕ, являются недействительными, должны ли мы отправлять надлежащие заголовки кэша?
Вы не указали никаких конкретных заголовков кэша, которые хотели бы использовать, поэтому немного неточно ответить на ваш вопрос. Кэширование - это отдельный раздел спецификации протокола: 13 Кэширование в HTTP .
Обычно следующее должно быть тем, что вы ищете, выдержка из 13.1.1 Корректность кэша :
Корректный кеш ДОЛЖЕН отвечать на запрос самым последним ответом, содержащимся в кеше, который соответствует запросу (см. Разделы 13.2.5, 13.2.6 и 13.12), который соответствует одному из следующих условия:
...
3. It is an appropriate 304 (Not Modified), 305 (Proxy Redirect),
or error (4xx or 5xx) response message.
Таким образом, вы можете кэшировать 404 ответных сообщения и сигнализировать о них в кэш. Прокси и клиенты должны справиться с этим.