Современные браузеры имеют реализацию HTTP-протокола, идеально близкую к стандартной, то же самое и для прокси-серверов, которые вам следует примите во внимание, хотите ли вы влиять на пользовательский и непреднамеренный трафик ботов. Текущая версия – 1.1, некоторые выдержки:
10.4 Ошибка клиента 4xx
Код состояния класса 4xx предназначен для случаев, когда клиент, похоже, допустил ошибку. За исключением ответа на запрос HEAD, серверу СЛЕДУЕТ включать объект, содержащий объяснение ситуации с ошибкой, а также того, является ли это временным или постоянным состоянием. Эти коды состояния применимы к любому методу запроса. Пользовательские агенты ДОЛЖНЫ отображать пользователю любой включенный объект.
Если клиент отправляет данные, реализации сервера, использующей TCP, СЛЕДУЕТ быть осторожным, чтобы гарантировать, что клиент подтверждает получение пакета(ов), содержащего ответ, до того, как сервер закроет входное соединение. Если клиент продолжает отправлять данные на сервер после закрытия, стек TCP сервера отправит клиенту пакет сброса, который может стереть неподтвержденные входные буферы клиента, прежде чем они смогут быть прочитаны и интерпретированы приложением HTTP.
Более конкретно для 404:
10.4.5 404 Не найдено
Сервер не нашел ничего, соответствующего Request-URI. Никаких указаний на то, является ли состояние временным или постоянным, не дается. Код состояния 410 (Gone) СЛЕДУЕТ использовать, если сервер через какой-то внутренне настраиваемый механизм знает, что старый ресурс постоянно недоступен и не имеет адреса пересылки. Этот код состояния обычно используется, когда сервер не хочет точно раскрывать, почему запрос был отклонен, или когда никакой другой ответ не применим.
Вот вам и код ответа 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 и сигнализировать им о кэшировании. Прокси и клиенты должны справиться с этим.
person
hakre
schedule
09.07.2011