2009-08-10 15 views
5

Sayfamda bir kullanıcı denetimi olan OutputCache kullanıyorum, ancak bu kullanıcı denetimini önbelleğe almak istemiyorum çünkü bir kullanıcı girişi ile ilgili (eğer sayfaya erişirsem, sayfayı sanki başka bir kullanıcıyla doğrulanmış).ASP.NET kullanıcı denetimi nasıl önbelleğe alınmaz?

Bunu nasıl yapabilirim?

cevap

10

Ben VaryByCustom oturum adlı kullanıcıya özelliğini kullanabilir ve kullanıcıların farklı önbelleğe alınmış sayfa izlenimi çıkış yaptı:

<%@ OutputCache VaryByCustom="IsLoggedIn" Duration="30" VaryByParam="*" %> 

sonra Global.asax içinde size

public override string GetVaryByCustomString(HttpContext context, 
    string arg) 
{ 
    if (arg == "IsLoggedIn") 
    { 

     if (context.Request.IsAuthenticated) 
     { 
      return "Logged in: " + context.User.Identity.Name; 
     } 
     else 
     { 
      return "Not Logged In"; 
     } 

    } 
    else 
    { 
     return base.GetVaryByCustomString(context, arg); 
    } 

} 

Sadece atacağım koymak

Bu orada. İkame kontrolüne ne dersin? msdn Web sitesine göre

http://msdn.microsoft.com/en-us/library/ms228212.aspx

:

değişikliği kontrolü dinamik ve sonra updated önbelleğe alınmış sayfa entegre olabilir sayfadaki alanları oluşturmak sağlar. ... değişikliği kontrol içeriğin çoğunluğu önbelleğe sayfaları için kısmi sayfa önbelleğe alma için basitleştirilmiş bir çözüm sunmaktadır. Sen çıktı-cache sayfanın tamamını can ve sonra kullanım değişikliği önbelleğe gelen muaftır sayfanın parçalarını belirtmek için kontrol eder.

Ben şahsen saydırma kontrolünü kullanılan hiç, ama sadece geçen gün bana aramayı oldu ve bir şekilde bir başka önbelleğe alınmış sayfa çıkışı içine Güncellenmiş bir içerik enjekte gibi geliyordu.

1

Bir sayfayı önbelleğe alabilir ve bir kullanıcı denetimi önbelleğe alabilir, ancak bir kullanıcı denetimi dışında bir sayfayı önbelleğe olamaz. Kullanıcı denetimi çalıştığında tüm sayfanın çalışması gerekir. Sayfanın farklı kullanıcılarını tanımak için çıktı önbelleğini yapmalısınız.

Kullanıcı kimliği bir çerez saklanır eğer çerez her set için sayfayı önbelleğe VaryByHeader="Cookie" kullanabilirsiniz. VaryByCustom="SomeString"'u kullanabilir ve Global.asax'daki GetVaryByCustomString yönteminde kendi kullanıcı kimliğinizi kontrol etmek için SomeString için bir kontrol uygulayabilirsiniz. Şahsen

İlgili konular