1

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

我如何在 C# 中做到这一点?

4

3 回答 3

0

您不能编写代码来清除客户端浏览器缓存。当您首先将日期发送到浏览器时,您所能做的就是为数据设置控制缓存策略。

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

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

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

添加

我花了一段时间才找到这篇解释浏览器缓存如何工作的文章。比浏览器缓存的 W3C 解释更容易理解

于 2014-02-28T10:21:26.827 回答
0

创建一个if condition检查登录帐户。如果满足条件,则使用此参考中的代码清除缓存。

于 2014-02-28T09:52:54.710 回答
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);

更多细节

在 ASP.NET 中清除页面缓存

于 2014-02-28T09:52:56.400 回答