Sayfalarımızın cache'lenmesini engellemek

Sayfamızın hafızada kalmasını istemiyorsanız yapmanız gerekenler bu yazıda...

Örnek senaryomuzda, bir kayıt formu yaptığınızı düşünelim. Kayıt işlemi tamamlandıktan sonra bir başka sayfaya yönlendiriyorsunuz. Kullanıcı tarayıcının geri tuşuna bastığında, kayıt formunuzdaki verilerin durmasını istemediğiniz halde tüm bilgilerin karşınıza çıktığını göreceksiniz.

ASP.NET'te bu durumun önüne geçmek için yapmanız gereken son derece kolay. Aşağıdaki satırları Page_Load'a ekleyin, yeter.

Response.ExpiresAbsolute = DateTime.Now.AddDays(-1.0);
Response.Expires = -1;
Response.CacheControl = "no-cache";
Header.Controls.Add(new HtmlMeta { Name = "Cache-Control", Content = "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0, timeout=0, max=993" });
Header.Controls.Add(new HtmlMeta { Name = "Pragma", Content = "no-cache" });
Header.Controls.Add(new HtmlMeta { Name = "Expires", Content = DateTime.Now.AddMonths(-1).ToString("R") });
Response.Cache.SetAllowResponseInBrowserHistory(false);
Response.Cache.SetExpires(DateTime.Now.AddDays(-1.0));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

IE, FW için cache lemeyi engelleyebiliyoruz, ama Google Chrome'da bu kodlar henüz çalışmıyor. Boşuna google da aramalar yapmayın, gerçekten çalışmıyor. Google herhalde bir ara bunu halleder diye düşünüyorum.