模块的IIS 7输出缓存

问题描述:

对于我正在使用的站点,我有一个稍微一次性的场景。模块的IIS 7输出缓存

我将某些请求路径路由到可动态输出“静态”内容的自定义HTTP模块。由此,我的意思是JavaScript和CSS内容。但是,该内容是由模块动态生成的,但一旦生成,不会经常更改。

所以,我想缓存我的自定义模块的输出,但由于某种原因,既没有缓存的内容,也没有304被返回到客户端,就像我所期望的。

如果我使用Firefox浏览到一个URL,本地浏览器缓存似乎工作。浏览器使用它在本地缓存的内容,不会向服务器发出请求。

但是,如果我在页面上按下F5,浏览器将尝试从服务器重新获取文件,随后服务器将重定向到模块,重新生成内容并基本上为其提供新鲜内容。我希望IIS能够返回304到客户端,或者从缓存中提供内容,并避免完全调用模块。

模块似乎返回正确的缓存头:

http://www.mydomain.com/SpecialPath/File_17aa85bf3bf430066a0524787be6af7b9363c8ae.js

的Cache-Control公众,最大年龄= 1800

内容编码gzip的

内容长度60568

Content-Type application/x-javascript;字符集= UTF-8

日期星期二,2012 3月27日20时25分42秒GMT

的Etag 17aa85bf3bf430066a0524787be6af7b9363c8ae

的Last-Modified周二,3月27日20点25分43秒2012 GMT

服务器微软IIS/7.5

因人而异的Accept-Encoding

X-ASPNET-版本4.0.30319

当我使用F5浏览器的请求头似乎也OK:

缓存控制最大年龄= 0

如果-Modified-Since的星期二,2012 3月27日20时25分21秒GMT

如果 - 无 - 匹配17aa85bf3bf430066a0524787be6af7b9363c8ae

但是,如果我设置一个断点,我看到请求被通过对模块通过。

304永远不会返回,也不会从输出缓存中提供内容。

我是否需要做任何额外或特殊的事情来获得输出缓存来缓存从自定义模块返回的内容?

我的头文件可能有错吗?

上次修改星期二,2012年3月27日20点25分43秒GMT 如果-Modified-Since的星期二,2012年3月27日20时25分21秒GMT

该资源的IMS值后修饰22秒,所以304不退换