Devre dışı tarayıcıların sayfayı önbelleğe alması için hangi ASP.NET kodunun gerekli olduğuna dair kesin bir başvurunun peşindeyim. HTTP üstbilgilerini ve meta etiketleri etkilemenin birçok yolu vardır ve farklı tarayıcıların doğru şekilde davranması için farklı ayarların gerekli olduğu izlenimini edindim. Hangisinin tüm tarayıcılarda işe yaradığını ve sürümler dahil belirli tarayıcılar için hangisinin gerekli olduğunu belirtmek için yorumlanmış bir referans kod parçası almak gerçekten harika olurdu.
Orada bu konu hakkında çok fazla bilgi var, ancak henüz her yöntemin faydalarını ve belirli bir tekniğin daha yüksek seviyeli bir API tarafından değiştirilip değiştirilmediğini açıklayan iyi bir referans bulamadım.
Özellikle ASP.NET 3.5 SP1 ile ilgileniyorum, ancak önceki sürüm için de yanıt almak iyi olur.
Bu blog girişi Firefox ve IE Önbelleğe Alma Arasındaki İki Önemli Fark , bazı HTTP protokol davranış farklılıklarını açıklar.
Aşağıdaki örnek kod, ilgilendiğim şeyi göstermektedir
public abstract class NoCacheBasePage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
DisableClientCaching();
}
private void DisableClientCaching()
{
// Do any of these result in META tags e.g. <META HTTP-EQUIV="Expire" CONTENT="-1">
// HTTP Headers or both?
// Does this only work for IE?
Response.Cache.SetCacheability(HttpCacheability.NoCache);
// Is this required for FireFox? Would be good to do this without magic strings.
// Won't it overwrite the previous setting
Response.Headers.Add("Cache-Control", "no-cache, no-store");
// Why is it necessary to explicitly call SetExpires. Presume it is still better than calling
// Response.Headers.Add( directly
Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-1));
}
}