“ 304未修改”如何工作?

问题描述 投票:165回答:2
  • 如何生成“ 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,我不想解析,检查DB中的最后一个唯一ID,依此类推...确定数据更改,也不会比较直接返回结果,而不是md5()sha1()crc32()对结果进行散列并可以正常工作,但我想知道确定304的算法。

我想使用相同的算法来确定数据中的更改。

如何生成“ 304未修改”响应?浏览器如何确定对HTTP请求的响应是否为304?是由浏览器设置还是从服务器发送?如果由服务器发送,则...

http browser http-headers http-status-code-304
2个回答
193
投票

[当浏览器将某些内容放入其缓存时,它还会存储服务器中的Last-ModifiedETag标头。


17
投票

上次修改时间:所请求对象的上次修改日期

© www.soinside.com 2019 - 2024. All rights reserved.