2011-05-15 26 views
11

VaryByHeader="User-Agent" ve VaryByCustom="Browser" arasındaki farklardan emin değilim. İkincisinin daha az önbelleğe alınmış sayfalar oluşturması doğru mu? Başka bir deyişle, sadece farklı tarayıcı türleri (ve sürümleri) için önbellek yapmak istersek, ikincisi daha iyi bir seçim midir?Çıkış Önbelleği: VaryByHeader = "Kullanıcı Aracı" veya VaryByCustom = "Tarayıcı"?

Herhangi bir öneri için teşekkürler! MSDN makalesinde itibaren sl3dg3

cevap

15

- ASP.NET Caching: Techniques and Best Practices:

her tarayıcı için ayrı önbellek girdilerini sağlamak amacıyla, VaryByCustom "Tarayıcı" bir değere ayarlanabilir. Bu işlevsellik, önbellek modülünde yerleşiktir ve her tarayıcı adı ve ana sürüm için sayfanın ayrı önbelleğe alınmış sürümlerini ekler.

aşağıdaki useragents tüm IE9.0 düşünülebilir anlamına ve bir önbellek girdisi yaratmak için bu alacağını

:

  • Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US))
  • Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)
  • Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)

Ancak, VaryByHeader="User-Agent"

3

'u kullandıysanız, kullanıcı aracısı yalnızca tarayıcıdan daha fazla içeriğe sahip olabilir ve hatta .NET dahil olmak üzere bazı eklentiler olabilir, böylece tarayıcı daha az önbelleğe alınmış sayfalara sahip olması gerektiğini tahmin ederek tarayıcıya sahip olabilir.

Ayrıca, bu en iyi uygulamaları sayfa kullanmak tavsiye ederiz: Ben browser tarayıcı sürümleri göre değişir ETMEZ görebilirsiniz bu iyi uygulamalar makaleden Ayrıca

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

. Bu benim tek korkumdu ve zaten onları koruyorlar. Ayrı önbelleğe her tarayıcı için girişlerini sağlamak amacıyla

, VaryByCustom "Tarayıcı" bir değere ayarlanabilir. Bu işlevsellik, önbelleğe alma modülünde yerleşik olarak bulunur ve her tarayıcı adı ve ana sürümü için sayfasının ayrı olarak önbelleğe alınmış sürümlerini ekler. Hatta user-agent ile sayfaların çok daha fazla kopya olmazdı, bu yüzden, ben bunu puck biri büyük bir anlaşma değil iddia ediyorum

<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser" %> 

Not.

İlgili konular