引進問題配置MVC.NET的OutputCache返回304未修改如果一個ActionResult沒有改變
我們已經成功地配置瀏覽器的緩存,如果服務器指示304 Not Modified
返回保存的響應。下面是配置:
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add
name="TransparentClient"
location="Client"
duration="0" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
的Web.config是完美的,並設置Cache-control:private, max-age=0
使:
- 瀏覽器會緩存響應,
- 將總是驗證緩存, 如果服務器響應304,則
- 將返回緩存的響應。
的問題是,我們的MVC.NET操作總是回覆200和304從未
的問題
我們如何配置輸出緩存返回一個304當一個ActionResult沒有改變不修改?
- 在MVC.NET中是否有內置的緩存驗證?
- 如果不是,我們如何推出我們自己的緩存驗證機制?
roll-our-own可能需要帶有ETag或Last-Modified的Action Filter。
屏幕快照
下面是一個屏幕截圖的Fiddler表示缺乏的304
318是SHIFT +刷新。
332是一個刷新,我們預計會導致304.問題。
搜索和研究
ASP.NET MVC : how do I return 304 "Not Modified" status?提到從操作中返回一個304。這並沒有提供一種方法使OutputCache準確地響應一個304.
Working with the Output Cache and other Action Filters顯示如何重寫OnResultExecuted,這將允許添加/刪除標題。
你可能意思是#332 ... – haim770