我有一個運行在IIS 7.5上的ASP MVC 3網站,我不能阻止它緩存。防止在IIS 7.5上運行的ASP MVC網站緩存
我已經通過向網站添加'* Do Not Cache'條目來禁用IIS中的輸出緩存,並在結果執行上在控制器上添加了一個操作篩選器,以防止緩存(請參見下面的代碼),但是當我使用該網站,它仍然是緩存。我從Internet Explorer和Firefox刪除了所有歷史記錄和Cookie等,但我仍然看到舊數據。
有沒有人有任何想法或建議,我可以做什麼來嘗試和預防呢?
由於提前,
詹姆斯
UPDATE
我進一步挖掘使用SQL事件探查器,它似乎是SQL服務器緩存查詢。情況會是這樣嗎?
月2日更新
我現在知道,如果不definitley SQL緩存,現在看到的IIS和MVC
解決!
這是NHibernate!
它對每個呼叫使用相同的會話而不是每個請求的會話。
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation (HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
base.OnResultExecuting(filterContext);
}
你完全確信數據本身不僅僅是舊的嗎?我很確定MVC不會僅僅默認緩存所有內容。我不記得曾經遇到過這個問題 – Jimmy 2011-05-12 13:13:50
嗨吉米 - 是的,我確定。數據得到更新,我可以看到,在SQL使用管理工作室,但該網站仍然顯示舊數據。 – 2011-05-12 13:17:43
吉米是對的。 MCV不應該默認緩存,IIS也不應該緩存。你能更具體地說明你在做什麼嗎?你的代碼執行什麼操作?你期望發生什麼? – rciq 2011-05-12 13:29:24