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
ブラウザーでレンダリングしたときにクラスまたはアクションになかった場合、それが機能していることを確認したい場合は、変更をコンパイルした後、ブラウザーで「ハードリフレッシュ」(Ctrl + F5)を実行する必要があることに注意してください。そうするまで、ブラウザは古いキャッシュバージョンを保持し、「通常の更新」(F5)でそれを更新しません。