最佳答案
如何产生「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
。我不想解析,检查数据库中最后的唯一 ID 等等... 来确定数据的变化,也不想直接比较结果,而是 I md5()
,sha1()
和 crc32()
散列结果和工作正常,但我想知道算法来确定 304
。
我想使用同样的算法来确定我的数据的变化。