jqueryを使用したasp.netを使用したMVC4アプリがあり、プロジェクトは最初にすべてのページをロードし、ajaxを介してコンテンツを更新します。
アプリからログオフした後、すべてのページがキャッシュに残ります。次回のログイン時に、新しいデータと古いデータが混在したり、一部のデータが繰り返されたりする原因となります。
ログオフ時にすべてのキャッシュを削除するにはどうすればよいですか?
jqueryを使用したasp.netを使用したMVC4アプリがあり、プロジェクトは最初にすべてのページをロードし、ajaxを介してコンテンツを更新します。
アプリからログオフした後、すべてのページがキャッシュに残ります。次回のログイン時に、新しいデータと古いデータが混在したり、一部のデータが繰り返されたりする原因となります。
ログオフ時にすべてのキャッシュを削除するにはどうすればよいですか?
私はブラウザがページをキャッシュしていると仮定しています。この場合、ログオフ時にブラウザからキャッシュを単純に削除することはできません。
代わりに、どのページもキャッシュしないようにブラウザに指示する必要があります。
OnResultExecuting
シンプルなアクション フィルターでこれを行い、メソッドをオーバーライドできます。
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);
base.OnResultExecuting(filterContext);
}