Каково обоснование заголовка HTTP Date?
Вопрос
Я читал RFC 2616, но все же мне интересно, для чего предназначено поле Даты.Существует поле Last-Modified, которое на самом деле имеет значение помимо простого обслуживания метаданных, то есть для кэширования ('If-Modified-Since').
Но какой смысл удваивать информацию в отдельном заголовке даты?
Решение
За спецификация, он используется при расчетах возраста.Если вы не знаете, сколько времени, по мнению сервера, сейчас, вы не сможете вычислить "возраст" ресурса.Вот соответствующий текст из спецификации:
Краткое описание алгоритма вычисления возраста, когда кэш получает ответ:
age_value
является ли значение возраста:заголовок, полученный кэшем с этим ответом.
date_value
является значением исходного сервераDate:
заголовок
request_time
это (локальное) время, когда кэш отправил запрос , который привел к этому кэшированному ответу
response_time
это (по местному) времени, когда кэш получил ответ
now
это текущее (местное) времяapparent_age = max(0, response_time - date_value); corrected_received_age = max(apparent_age, age_value); response_delay = response_time - request_time; corrected_initial_age = corrected_received_age + response_delay; resident_time = now - response_time; current_age = corrected_initial_age + resident_time;