2012-03-27 72 views
0

對於我正在使用的站點,我有一個稍微一次性的場景。模塊的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永遠不會返回,也不會從輸出緩存中提供內容。

我是否需要做任何額外或特殊的事情來獲得輸出緩存來緩存從自定義模塊返回的內容?

我的頭文件可能有錯嗎?

回答

2

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

該資源的IMS值後修飾22秒,所以304不退換