Как генерируются ответы "304 Not Modified"?
Как браузер определяет, является ли ответ на 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
.
Я хочу использовать такой же алгоритм для определения изменения моих данных.