IIS 7返回304而不是200

我有一个奇怪的问题与IIS 7。
有时似乎返回一个304而不是200。

这是一个用Fiddler捕获的示例请求:
(请注意,所请求的文件尚未位于我的浏览器caching中。)

GET https://[mysite]/Content/js/jquery.form.js HTTP/1.1 Accept: */* Referer: https://[mysite]/Welcome/News Accept-Language: sv-SE User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E) Accept-Encoding: gzip, deflate Host: [mysite] Connection: Keep-Alive Cache-Control: no-cache Cookie: ... 

请注意,请求中没有If-Modified-Since或If-None-Match。
但答复仍然是:

 HTTP/1.1 304 Not Modified Cache-Control: public Expires: Tue, 02 Mar 2010 06:26:08 GMT Last-Modified: Mon, 22 Feb 2010 21:58:44 GMT ETag: "1CAB40A337D4200" Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET Date: Mon, 01 Mar 2010 17:06:34 GMT 

有没有人有什么可能是错误的线索?

我正在Windows Web Server 2008 R2上运行IIS 7。

编辑:

我find了一个解决方法,启用caching,然后在扩展级别禁用它做了我的伎俩。

 <configuration> <system.webServer> <caching enabled="true" enableKernelCache="true"> <profiles> <add extension=".png" policy="DisableCache" kernelCachePolicy="DisableCache" /> <add extension=".gif" policy="DisableCache" kernelCachePolicy="DisableCache" /> <add extension=".js" policy="DisableCache" kernelCachePolicy="DisableCache" /> <add extension=".css" policy="DisableCache" kernelCachePolicy="DisableCache" /> </profiles> </caching> <staticContent> <clientCache cacheControlMode="NoControl" /> </staticContent> </system.webServer> </configuration> 

根据HTTP1.1规范的第14.9节 ,Cache-Control头的no-cache指令只能由原始服务器强制执行,这意味着IIS忽略了请求中的头部。

caching控制指令可以细分为以下几个大类:

  - Restrictions on what are cacheable; these may only be imposed 

由原始服务器。

第14.9.1节将publicprivateno-cache定义为限制什么是可no-cache的指令,只能由服务器施加。

如果你不想让你的.js文件被caching,你需要在应用程序中设置no-cache指令(即​​ASP.NET代码),或者你需要改变Cache-Control头请求使用no-store指令而不是no-cache

编辑:
根据你的评论 – 是的,我认为你不希望该文件caching。 那么,304可能是由于该文件在IIS的内部caching之一。 看看这些:

  • 在IIS7中configuration输出caching
  • 在IIS7caching

我一直有同样的问题一段时间,并closures所有的caching…但是,我安装了压缩模块的IIS7在某些时候,默认情况下已启用压缩我的现有网站上的静态文件。 我把所有的压缩closures了受影响的网站,现在他们似乎正在工作良好的触摸木材