2014-02-28 105 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更容易理解浏览器缓存的说明