我的輸出緩存似乎沒有按預期工作 這是一個控制器方法來返回我的網站的默認頁面。 我已經緩存它40秒(測試 - >在現場被緩存更長的時間)OutputCache無法正常工作 - > ASP.NET MVC5
[OutputCache(Duration = 40, Location = OutputCacheLocation.ServerAndClient, VaryByParam = "none")]
public async Task<ActionResult> Index(){
......
}
我有2個問題
首先
當我打的端點第一時間它正確地緩存在服務器上,並返回以下響應頭(如預期)等等。
status:200
Cache-Control:"private, max-age=40, s-maxage=0"
當我打開一個新的瀏覽器選項卡並在5秒鐘後粘貼在同一端點。它進入服務器,並返回一個200的內容和以下標題
status:200
Cache-Control:"private, max-age=63622944145, s-maxage=63622944105"
這似乎不正確的我。我期望它通過If-modified-since頭向服務器發送請求。如果緩存的響應自頭文件時間以來被重建,那麼它將返回一個200 +內容,否則返回一個304.因此,在這種情況下,由於服務器緩存未被重建,它應該返回一個304.另外,由於最大年齡非常大它現在是無效的,因此立即被視爲陳舊。 那麼我在做什麼錯...?
其次
我把一個斷點在我的索引方式,並從我的瀏覽器擊中了終點。在我第一次點擊Index端點時,斷點被擊中。按照預期,對端點的後續請求不會在接下來的40秒內達到斷點。但是,如果我在瀏覽器中將端點添加到端點的末尾,它將會忽略忽略緩存的斷點。 我該如何避免這種情況..?
關於你的問題,該URL 'http://www.example.com' 和 'http://www.example.com/' 下半年,與/,是不同的頁面。如果您希望兩者的處理方式相同,則您需要在Web.Config中有一個URL重寫模塊。我會在下面修改我的答案。 – kodikas