-4

ASP.NET(C#)を使用して、ブラウザーのキャッシュサーバー側を削除するにはどうすればよいですか?

クーポンはそれ自体で表示されます(他のアパレルサイトも参照したので、キャッシュから取得されたと思います)。Ajax用のUpdatePanelを使用しているため、JavaScriptとサーバー側のコードが壊れ、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

できません。

何かをキャッシュしないようにクライアントに指示することはできますが、いったんキャッシュすると、キャッシュをクリアするサーバー側のメカニズムはありません。キャッシュが期限切れになるか、ユーザーがキャッシュをクリアするまで待つ必要があります。

于 2012-12-03T05:06:01.193 に答える
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 に答える