[解決済み】ASP.NET MVCで属性を使用して特定のアクションのキャッシュを防止する
2022-04-13 14:53:36
質問
ASP.NET MVC 3アプリケーションを持っています。このアプリケーションは、jQueryを通じてレコードを要求します。jQueryは、JSON形式で結果を返すコントローラのアクションにコールバックします。私はこれを証明することができませんでしたが、私は私のデータがキャッシュされている可能性があることを懸念しています。
すべてのアクションではなく、特定のアクションにのみキャッシュを適用させたいのですが。
データがキャッシュされないようにするために、アクションに付けることができる属性はありますか?そうでない場合、ブラウザがキャッシュされたセットではなく、毎回新しいレコードのセットを取得するようにするにはどうすればよいでしょうか?
どのように解決するのですか?
JQueryが結果をキャッシュしていないことを確認するために、ajaxメソッドに以下を記述してください。
$.ajax({
cache: false
//rest of your ajax setup
});
また、MVCでキャッシュを防ぐために、独自の属性を作成しましたが、同じようにすることも可能です。以下は私たちのコードです。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class NoCacheAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
base.OnResultExecuting(filterContext);
}
}
そして、コントローラを
[NoCache]
. あるいは、このようにコントローラを継承した基底クラスのクラスに属性を設定することもできます。
[NoCache]
public class ControllerBase : Controller, IControllerBase
また、一部のアクションを非キャッシュにする必要がある場合は、 コントローラ全体を装飾するのではなく、この属性で装飾することもできます。
もしあなたのクラスやアクションが
NoCache
変更をコンパイルした後、ブラウザで "hard refresh" (Ctrl+F5) を実行する必要があることを忘れないでください。そうしないと、ブラウザはキャッシュされた古いバージョンを保持し、"normal refresh" (F5)では更新されないからです。
関連
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ELMAHをASP.NET MVCの[HandleError]属性で動作させる方法は?
-
[解決済み】ASP.NET MVCでWebアプリのベースURLを取得するにはどうすればよいですか?
-
[解決済み] ASP.NET MVCのAjaxポストでantiforgerytokenを含める。
-
[解決済み] ASP.NET MVCの非同期操作では、.NET 4のThreadPoolからスレッドを使用しますか?
-
[解決済み] ASP.NETでWebAPIやMVCを使ってJSONを返す。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】統合マネージドパイプラインモードで適用されないASP.NETの設定が検出された
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み】Angular IE の $http のキャッシュの問題