Как генерируются ответы «304 не изменены»?
Как браузер определяет, является ли ответ на запрос HTTP 304?
Это установлено браузером или отправлено с сервера?
Если сервер отправляет его, как сервер узнает данные, доступные в кеше, а также как установить 304 для изображения?
Я думаю, если это сгенерировано браузером:
function is_modified()
{
return get_data_from_cache() === get_data_from_url();
}
function get_data_from_cache()
{
return some_hash_or_xxx_function(cache_data);
}
function get_data_from_url()
{
return some_hash_or_xxx_function(new_data);
}
function some_hash_or_xxx_function(data)
{
// Do something with the data.
// What is that algorithm?
return result;
}
console.log(is_modified());
Я полагаюсь на стороннего провайдера API для получения данных, их анализа и отправки в базу данных. Данные могут изменяться или не изменяться во время каждого запроса, но заголовок всегда отправляется 200
. Я не хочу анализировать, проверять последний уникальный идентификатор в БД и т. Д. ... чтобы определить изменение данных, а также сравнивать результат напрямую, а не я md5()
, sha1()
и crc32()
хэшировал результат и работает нормально, но мне интересно алгоритм определения 304
.
Я хочу использовать такой же алгоритм для определения изменений в моих данных.