我正在寫一個應用程序,並遇到緩存問題,我不能解決。ASP.NET MVC 2緩存問題
我有一個網站的默認主頁控制器,它檢查用戶是否通過身份驗證。 如果不是則顯示LogOn View,否則客戶端被重定向到另一個頁面。
除了LogOn視圖之外,如果瀏覽器支持cookie,還會向用戶發送Check cookie以檢查響應。
當我與憑證發送表單之前刪除cookie,首頁(Post方法)在首頁控制器顯示消息餅乾必須使用一個按鈕來激活它 應登錄框刷新頁面(http://localhost:1234/)
此按鈕鏈接到js刷新功能:
var sURL = unescape("/");
function refresh()
{
window.location.href = sURL;
}
我已經實現了在基礎控制器上設置的CacheFilter。
public class NoCache : ActionFilterAttribute, IActionFilter
{
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);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
}
}
問題是,如果我立即點擊按鈕刷新LogOn頁面,瀏覽器使用它的緩存讀取它。但是當我在幾秒鐘之後完成時,查詢就會發送到服務器。 這是錯誤的,因爲LogOn頁面還應該再次創建一個Check cookie。
在我看來,緩存策略設置爲1-2秒,並在此之後頁面從服務器重新加載。
有什麼不對?感謝幫助。
您正在測試哪個瀏覽器?或者所有瀏覽器都遇到同樣的問題? – 2010-09-22 07:19:09
它是在Firefox下測試的,IE可能是bahaves山姆的方式..但稍後會檢查它 – XXL 2010-09-22 09:51:05