HttpWebResponse LastModified

HttpWebResponse.LastModified准确吗? 它总是存在吗? 我的项目是创建一种专注的Web爬虫,如果我将使用资源的哈希值或仅使用HttpWebResponse.LastModified属性来检查资源的“新鲜度”,我就会陷入困境。

使用哈希值意味着每次检查时都会流式传输资源。 这对整体表现有很大影响。

如果我只检查HttpWebResponse.LastModified,它是否准确?

HttpWebResponse.LastModified返回HTTP Last-Modified响应头的值。

HTTP响应标头由发送响应的HTTP服务器设置。 如果它设置了Last-Modified响应头,它是否完全取决于服务器,以及它是否将其设置为准确值。

Last-Modified响应头是HTTP中缓存的validation模型的一部分。 它通常与If-Modified-Since请求标头一起使用。 您可能希望阅读HTTP / 1.1,第6部分:缓存细节。

这取决于你的目的。

Last-Modified意味着服务器很高兴您继续使用具有相同最后修改值的实体(或稍后暗示,尽管服务器的最后修改后的内容会很奇怪,但可能会发生在一些多服务器情况下)。

电子标签更强(如果它不是“弱”电子标签,则更多)因为它标识特定实体(不同语言版本的电子标签,不同的内容类型版本或不同的内容编码版本会有所不同除非它们实际上是同一个实体[在一组有限的情况下可能发生])。

两者都可能是“松散”的,也许服务器的变化被认为是微不足道的; 服务器很高兴您继续使用前一个实体,因为它认为它是相同的(“强”电子标签除外,它必须指示用于范围请求的八位字节到八位字节的标识)。

两者当然都可能是完全错误的。 虫子发生了。 也就是说,当他们错了时,往往会朝另一个方向发生变化,在没有发生变化的情况下报告变化(一个有效的行为,一个人可以对新鲜度过于谨慎;它永远不会损害只会使次优)。

那么问题是,您是否需要知道服务器认为没有进行任何更改(大多数使用)或者确实存在更改(几乎仅限于诊断工具)。

除非你有明确的理由不相信,否则相信最后修改和电子标签(但更多信任电子标签)。