IIS 7 / 7.5 304(未修改)是否涉及磁盘IO?

我想知道IIS(7 / 7.5)如何在304((未修改))响应代码中工作。例如,当一个图像caching在带有Last-Modified HTTP头部集的客户端(即Web浏览器) IIS需要真正检查物理映像文件是否真正被更新?如果有很多映像,这个磁盘IO活动可能是瓶颈,即使图像被caching在客户端。的数据传输线,但不是在服务器磁盘IO方面。

同样的问题可以适用于HTTP ETag。 我会假设IIS需要制定'内容哈希',以便浏览器可以找出是否获取更新的页面或只使用浏览器caching。

谢谢。

磁盘访问确实是必需的,至less为了检查图像是否存在(即应该发送304而不是404)。

来自w3.org的snip也适用于IIS。

If the client has performed a conditional GET request and access is allowed, but the document has not been modified, the server SHOULD respond with this status code. The 304 response MUST NOT contain a message-body, and thus is always terminated by the first empty line after the header fields. 

由于标头值没有改变,所以IIS不需要GET文件,因此不应该有任何IO。 如果标题值不一致,那么会有一个GET,然后是IO。

编辑:添加内容过期

如果您的网站上有时间敏感信息,则可以configuration设置以确保过时的信息不会被代理或Web浏览器caching。 您可以将网站内容configuration为随时自动过期。 启用内容过期时,Web浏览器会将当前date与过期date进行比较,以确定是显示caching页面还是从服务器请求更新页面。 服务器端技术(如Microsoft ASP.NET)可用于dynamic更改所提供的内容。 通常,时间敏感信息仅限于单个文件,目录或网站; 但是,也可以在计算机上为所有网站设置内容到期。

提琴手跟踪也可以帮助理解这个概念。