1. ホーム
  2. asp.net

ASP.NET MVC 自動キャッシュオプションを無効にする方法は?

2023-09-04 08:43:21

質問

asp.Net mvc アプリケーションからブラウザの自動キャッシュを無効にする方法は?

それはすべてのリンクをキャッシュするように私はキャッシュに問題があるためです。しかし、時々それは自動的にDEFAULT INDEX PAGEにリダイレクトされます。 そのリンクにクリックするすべての時間は、それがDEFAULT INDEX PAGEに私をリダイレクトされるようになり、それがキャッシュを格納した。

ASP.NET MVC 4からキャッシュオプションを手動で無効にする方法を知っている人がいますか?

どのように解決するのですか?

を使用することができます。 OutputCacheAttribute を使用して、特定のアクションあるいはコントローラ内の全てのアクションに対してサーバやブラウザのキャッシュを制御することができます。

コントローラ内の全てのアクションを無効にします。

[OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)] // will be applied to all actions in MyController, unless those actions override with their own decoration
public class MyController : Controller
{
  // ... 
}

特定のアクションに対して無効化する。

public class MyController : Controller
{
    [OutputCacheAttribute(VaryByParam = "*", Duration = 0, NoStore = true)] // will disable caching for Index only
    public ActionResult Index()
    {
       return View();
    }
} 

すべてのコントローラのすべてのアクションにデフォルトのキャッシュ戦略を適用したい場合、コントローラ内に グローバルアクションフィルタ を編集することで global.asax.cs を編集して RegisterGlobalFilters メソッドを探します。このメソッドは、デフォルトのMVCアプリケーションのプロジェクトテンプレートに追加されています。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new OutputCacheAttribute
                    {
                        VaryByParam = "*",
                        Duration = 0,
                        NoStore = true,
                    });
    // the rest of your global filters here
}

これによって OutputCacheAttribute を適用し、サーバとブラウザのキャッシュを無効にします。この no-cache を上書きするには、アクションに OutputCacheAttribute を特定のアクションやコントローラに追加することで、 この no-cache を上書きすることができます。