-4

如何使用 ASP.NET (C#) 删除浏览器的服务器端缓存?

优惠券会自行显示(我相信它来自缓存,因为我也浏览过其他服装网站)。它破坏了我的 JavaScript 以及我的服务器端代码,因为我正在为 Ajax 使用 UpdatePanel,并且它复制了 UpdatePanel 的 ID。我已经重命名了 UpdatePanel 的 ID,但这并没有什么区别。它生成“无效的视图状态”异常。优惠券名称为“FastSave”

我试过的:

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

3 回答 3

2

你可以像这样停止缓存:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetExpires(DateTime.Now);
    Response.Cache.SetNoServerCaching();
    Response.Cache.SetNoStore();
}
于 2012-12-03T04:40:17.290 回答
0

以下是我在 ASP.NET MVC 2 应用程序中设置客户端浏览器缓存的方法:

public class CacheFilterAttribute : ActionFilterAttribute {

    /// <summary>
    /// Gets or sets the cache duration in seconds. The default is 10 seconds.
    /// </summary>
    /// <value>The cache duration in seconds.</value>

    public int Duration { get; set; }

    public CacheFilterAttribute() { Duration = 10; }

    public override void OnActionExecuted(ActionExecutedContext filterContext) {
        if (Duration <= 0) return;

        var cache = filterContext.HttpContext.Response.Cache;
        var cacheDuration = TimeSpan.FromSeconds(Duration);

        cache.SetCacheability(HttpCacheability.Public);
        cache.SetExpires(DateTime.Now.Add(cacheDuration));
        cache.SetMaxAge(cacheDuration);
        cache.AppendCacheExtension("must-revalidate, proxy-revalidate");
    }
}
于 2012-12-03T04:56:40.400 回答
0

你不能。

您可以告诉客户端不要缓存某些内容,但是一旦这样做了,就没有服务器端机制来清除缓存。您必须等待缓存过期或用户清除缓存。

于 2012-12-03T05:06:01.193 回答