对于我正在处理的网站,我有一个略微一次性的情况。
我将某些请求路径路由到自动输出“静态”内容的自定义HTTP模块。那个,我的意思是javascript和css内容。但是,该内容是由模块动态生成的,但一旦生成,就不会经常更改。
所以,我想缓存我的自定义模块的输出,但由于某种原因,缓存内容和304都没有像我期望的那样返回到客户端。
如果我使用Firefox浏览到URL,则本地浏览器缓存似乎有效。浏览器使用它在本地缓存的内容,但不向服务器发出请求。
但是,如果我在页面上按F5,浏览器会尝试从服务器重新获取文件,然后服务器会重定向到模块,重新生成内容,并且基本上是新鲜的。我希望IIS代替304返回客户端,或者从缓存中提供内容,避免完全调用模块。
该模块似乎正在返回正确的缓存标头:
http://www.mydomain.com/SpecialPath/File_17aa85bf3bf430066a0524787be6af7b9363c8ae.js
Cache-Control public,max-age = 1800
Content-Encoding gzip
内容长度60568
Content-Type application / x-javascript;字符集= UTF-8
Date Tue,2012年3月27日20:25:42 GMT
Etag 17aa85bf3bf430066a0524787be6af7b9363c8ae
Last-Modified星期二,2012年3月27日20:25:43 GMT
服务器Microsoft-IIS / 7.5
改变接受编码
X-AspNet-Version 4.0.30319
当我使用F5时,浏览器请求标题似乎也没问题:
Cache-Control max-age = 0
If-Modified-Since Tue,2012年3月27日20:25:21 GMT
If-None-Match 17aa85bf3bf430066a0524787be6af7b9363c8ae
但是,如果我设置了一个断点,我会看到请求被传递给模块。
永远不会返回304,也不会从输出缓存中提供内容。
我是否需要执行额外或特殊操作以获取输出缓存以缓存从自定义模块返回的内容?
我的标题可能有问题吗?
答案 0 :(得分:2)
Last-Modified星期二,2012年3月27日20:25:43 GMT If-Modified-Since Tue,2012年3月27日20:25:21 GMT
在I-M-S值之后22秒修改资源,因此不返回304