Untuk memastikan bahwa JQuery tidak melakukan caching hasilnya, pada metode ajax Anda, tuliskan yang berikut:
$.ajax({
cache: false
//rest of your ajax setup
});
Atau untuk mencegah caching di MVC, kami membuat atribut kami sendiri, Anda bisa melakukan hal yang sama. Ini kode kami:
[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);
}
}
Kemudian hiasi saja pengontrol Anda dengan [NoCache]
. ATAU untuk melakukannya untuk semua yang Anda bisa letakkan atribut pada kelas kelas dasar tempat Anda mewarisi pengontrol Anda (jika ada) seperti yang kami miliki di sini:
[NoCache]
public class ControllerBase : Controller, IControllerBase
Anda juga dapat menghias beberapa tindakan dengan atribut ini jika Anda membutuhkannya agar tidak dapat di-cache, alih-alih mendekorasi keseluruhan pengontrol.
Jika kelas atau tindakan Anda tidak memiliki NoCache
saat itu diberikan di browser Anda dan Anda ingin memeriksa itu berfungsi, ingat bahwa setelah mengkompilasi perubahan yang Anda butuhkan untuk melakukan "penyegaran keras" (Ctrl + F5) di browser Anda. Sampai Anda melakukannya, browser Anda akan menyimpan versi cache lama, dan tidak akan menyegarkan dengan "refresh normal" (F5).