セキュリティと一貫性のためにページをキャッシュしたくありません。ブラウザで戻るボタンを押すと、常にサーバーに移動してhtmlを取得する必要があります。
次のアクションフィルターを作成することでそれを達成しました。
public class NoCache : 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);
}
}
グローバルフィルターとしてすべてにフィルターを適用しました
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// Makes sure that cached pages are not served to any browser including chrome
filters.Add(new NoCache());
}
問題は解決しました。ただし、すべての画像、css、および javascript ファイルもキャッシュされていません。 それらをキャッシュするように指示するにはどうすればよいですか?