2014-02-28 64 views
1

對於我的應用程序,我想在登錄之前清除緩存。 但是,如果某人以不同的帳戶登錄,我想清除緩存,以便刷新頁面並且不保留先前用戶的值。在記錄之前清除

如何在C#中執行此操作?

+0

清除哪個緩存 - 這是很多或不同類型的緩存 –

+0

http://stackoverflow.com/questions/4757733/how-can-i-programmatically-clear-cache –

+0

Gary..client緩存 – user2483797

回答

0

創建一個if condition來檢查登錄帳戶。然後使用此reference中的代碼清除緩存,如果它滿足條件。

0

使用此代碼,您可以清除瀏覽器緩存。

您也可以在您的網站的LogOut而不是login上使用它。

Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 

或者你也可以做到這一點的方式

https://stackoverflow.com/a/2876701/2218635

您可以通過這種方式定義緩存

HttpContextBase的HttpContext = filterContext.HttpContext; httpContext.Response.AddCacheItemDependency(「Pages」);

和設置緩存時登錄

protected void Application_Start() 
{ 
    HttpRuntime.Cache.Insert("Pages", DateTime.Now); 
} 

和清除緩存時註銷

HttpRuntime.Cache.Insert("Pages", DateTime.Now); 

詳情

Clearing Page Cache in ASP.NET

+0

這並不能清除瀏覽器緩存。它爲您當前正在生成的頁面設置緩存策略,瀏覽器緩存中的某些內容在消耗新的網頁後仍會保留在瀏覽器緩存中。 –

+0

@GaryWalker我已經更新了我的答案,請現在看看哥們 –

0

您無法編寫代碼來清除客戶端瀏覽器緩存。您可以在首次將日期發送到瀏覽器時爲數據設置控制緩存策略。例如,如果您最初有一個圖像文件,並且在瀏覽器檢索到該圖像文件時到期時間午夜,瀏覽器將不會在午夜之前將文件從其緩存中刪除。如果您需要立即強制瀏覽器獲取不同版本的文件,則URI必須更改 - 即將該文件重命名爲新的(版本2)名稱。

您只能控制發送給瀏覽器(或介入代理服務器,或兩者)的項目的緩存策略。瀏覽器可以忽略策略(如果它想成爲一個非常糟糕的瀏覽器),但不能發送任何可以清除預先存在的瀏覽器緩存的內容。

策略(在http頭文件中)設置諸如過期時間(GMT),相對時間(即緩存持久化)以及no-cache指令。您可以將其設置爲瀏覽器緩存(或代理和共享緩存)。但一旦它通過電線,你不能清除它。

ADDED

我花了一段時間來找到this article explaining how browser caching works。比W3C更容易理解瀏覽器緩存的說明