MVC, Ajax and Internet Explorer
Internet Explorer mempunyai kelemahan apabila ada request yang bersifat async (ajax). Dia tidak akan langsung melakukan load terhadap request yang dimaksud, tetapi dia akan melakukan load dari cache apabila cache yang berkaitan dengan request tersebut masih valid. Sehingga response yang diberikan adalah data dari cache.Nyebelin ya…ini yang bikin rese….
Pada webform standar sebenarnya cara untuk mengatasinya mudah yaitu memasukan code berikut pada setiap postback, enaknya sih dimasukan ke event Page_Load sehingga perlakuan ini akan tetap melekat pada setiap request
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
Dengan begitu, tidak ada yang namanya loading dari cache. Untuk asp.net mvc, caranya agak berbeda, karena konsepnya aja dah beda. Anda harus meletakkan code diatas pada event OnActionExecuting (override dari class Controller). Sehingga code yang didapatkan adalah
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Request.IsAjaxRequest())
{
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
}
base.OnActionExecuting(filterContext);
}
}
Bedanya dari kedua code diatas adalah, Webform tidak dapat mengidentifikasi request yang dimaksud adalah cache atau bukan, sebaliknya, asp.net mvc dengan sebuah extension function dapat mengidentifikasi apakah request tersebut ajax atau bukan.
Recent Comments