对于我的应用程序,我想在记录之前清除缓存。但是,如果有人使用不同的帐户登录,我想清除缓存以便刷新页面并且不保留以前用户的值。
我如何在 C# 中做到这一点?
对于我的应用程序,我想在记录之前清除缓存。但是,如果有人使用不同的帐户登录,我想清除缓存以便刷新页面并且不保留以前用户的值。
我如何在 C# 中做到这一点?
您不能编写代码来清除客户端浏览器缓存。当您首先将日期发送到浏览器时,您所能做的就是为数据设置控制缓存策略。
例如,如果您最初有一个图像文件,当浏览器检索它时将过期设置为午夜,则浏览器不会在午夜之前从其缓存中删除该文件。如果您需要立即强制浏览器获取文件的不同版本,则 URI 必须更改——即将文件重命名为新的(版本 2)名称。
您只能控制发送到浏览器(或中间代理服务器,或两者)的项目的缓存策略。浏览器可以忽略该策略(如果它想成为一个非常糟糕的浏览器),但您不能发送任何会清除预先存在的浏览器缓存的内容。
策略(在 http 标头中),设置诸如过期时间 (GMT)、相对时间(即缓存持续时间)以及无缓存指令等内容。您可以为浏览器缓存(或代理和共享缓存)设置此项。但是一旦它越过电线,你就无法清除它。
添加
我花了一段时间才找到这篇解释浏览器缓存如何工作的文章。比浏览器缓存的 W3C 解释更容易理解
创建一个if condition
检查登录帐户。如果满足条件,则使用此参考中的代码清除缓存。
使用此代码,您可以清除浏览器缓存。
您也可以在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);
更多细节