เพื่อให้แน่ใจว่า 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)