记录前清除

时间:2014-02-28 09:43:17

标签: c# asp.net authentication session-cookies clear-cache

对于我的应用程序,我想在记录之前清除缓存。 但是,如果有人使用不同的帐户登录,我想清除缓存,以便刷新页面并且不保留以前用户的值。

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

3 个答案:

答案 0 :(得分:0)

创建if condition以检查登录帐户。然后使用此reference中的代码清除缓存(如果满足条件)。

答案 1 :(得分: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( “页面”);

并在登录时设置缓存

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

并在退出时清除缓存

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

更多细节

Clearing Page Cache in ASP.NET

答案 2 :(得分:0)

您无法编写代码来清除客户端浏览器缓存。当您首先将日期发送到浏览器时,您可以为数据设置控制缓存策略。

例如,如果您最初有一个图像文件,并且在浏览器检索到它时将过期时间设置为午夜,则浏览器将不会在午夜之前从其缓存中删除该文件。如果您需要立即强制浏览器获取文件的不同版本,则URI必须更改 - 即将文件重命名为新的(版本2)名称。

您只能控制发送到浏览器(或介入的代理服务器,或两者)的项目的缓存策略。浏览器可以忽略该策略(如果它想成为一个非常糟糕的浏览器),但是您无法发送任何可以清除预先存在的浏览器缓存的内容。

策略(在http标头中),设置诸如到期时间(GMT),相对时间(即缓存延迟)以及无缓存指令之类的内容。您可以为浏览器缓存(或代理和共享缓存)设置此项。但是一旦它越过电线,你就无法清除它。

ADDED

我花了一些时间才找到this article explaining how browser caching works。比W3C对浏览器缓存的解释更容易理解