Để đảm bảo rằng JQuery không lưu trữ kết quả, trên các phương thức ajax của bạn, hãy đặt như sau:
$.ajax({
cache: false
//rest of your ajax setup
});
Hoặc để ngăn chặn bộ đệm trong MVC, chúng tôi đã tạo thuộc tính của riêng mình, bạn có thể làm tương tự. Đây là mã của chúng tôi:
[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);
}
}
Sau đó, chỉ cần trang trí bộ điều khiển của bạn với [NoCache]
. HOẶC để làm điều đó cho tất cả những gì bạn có thể chỉ cần đặt thuộc tính vào lớp của lớp cơ sở mà bạn kế thừa bộ điều khiển của mình từ (nếu bạn có) như chúng tôi có ở đây:
[NoCache]
public class ControllerBase : Controller, IControllerBase
Bạn cũng có thể trang trí một số hành động với thuộc tính này nếu bạn cần chúng không được lưu trong bộ nhớ cache, thay vì trang trí toàn bộ bộ điều khiển.
Nếu lớp hoặc hành động của bạn không có NoCache
khi nó được hiển thị trong trình duyệt của bạn và bạn muốn kiểm tra xem nó có hoạt động không, hãy nhớ rằng sau khi biên dịch các thay đổi bạn cần thực hiện "làm mới cứng" (Ctrl + F5) trong trình duyệt của bạn. Cho đến khi bạn làm như vậy, trình duyệt của bạn sẽ giữ phiên bản được lưu trong bộ nhớ cache cũ và sẽ không làm mới nó bằng "làm mới bình thường" (F5).