HttpWebResponse LastModified

时间:2010-10-08 04:09:30

标签: c# http httpwebresponse

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

Last-Modified响应标头是HTTP中缓存验证模型的一部分。它通常与If-Modified-Since请求标头一起使用。您可能需要阅读HTTP/1.1, part 6: Caching了解详细信息。

答案 1 :(得分:3)

这取决于你的目的。

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

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

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

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

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

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