2012-04-16 26 views
6

ASP.NET MVC 3 ve AppFabric ile dağıtılmış bir önbellek çözümü olarak oldukça büyük bir site yapısı oluşturuyoruz. AppFabric kümemizi kullanmak için özel bir OutputCacheAdapter uyguladık.ASP.NET MVC, her eylem için outputcache vurgular

Bu eylemin, bir @OutputCacheAttribute ile dekore OLMADI olsa bile, ASP.NET'in her eylem için OutputCacheProvider.Get() yöntemini çağırdığını görüyoruz.

Varsayılan outputcacheprovider'ı kullanırsanız, bu bir sorun değil, ancak ayrı makinelerde bulunan bir outputcacheprovider çalıştırıyor olmanızdır.

cevap

4

Bu, önbelleğin sayfanın önbelleğe alınmış bir kopyası için ilk olarak işaretlenmiş olması gereğidir. Önbelleğe alınmış bir kopya varsa, iade edilir ve başka hiçbir şey gerçekleştirilmez. Özellikle, hiçbir denetleyici ve denetleyici eylemi üretilmez, denetlenmez veya yürütülür. Bu, sayfa önbelleğe alınmamışsa gerçekleşir.

Önbellek sağlayıcınızı değiştirmeniz, böylece sayfanın potansiyel olarak önbelleğe alınabileceğini hızlı bir şekilde belirleyebilmeniz gerekir. Sadece bir kokulu sayfa ise, o zaman gitmeli ve dağıtılmış önbelleği kontrol etmelidir. Bu kontrol, istek işlemenin bu bölümünde bulunmadığı için OutputCacheAttribute'u temel alamaz. Bunun yerine, hızlı kontrol URL, çerezler ve diğer HTML başlık bilgileriyle yapılmalıdır.

+0

Evet, bu iyi bir açıklama gibi görünüyor. Bununla birlikte gerçekten fazla bir şey yapamazsınız, ya performans cezasını kabul edersiniz, varsayılan OutputCacheProvider'a geri dönerler ya da URLS için bir siyah veya beyaz liste gibi bir şey sağlayın. – TheNameless

+1

@ TheNameless Kendim yapmadım ama rota parametrelerini [bir şekilde] alamıyorsunuz (http://www.scottschluer.com/creating-a-routedata-instance-from-a-url/) ve sonra denetleyici/eylem üzerindeki öznitelikleri incelemek için yansıma kullanın? İdeal değil ama muhtemelen bir ağ gidiş-dönüşünden daha hızlıdır. – Basic

0

Çıktı önbellek anahtarları için bir önek tanımlamanıza olanak sağlayan Donut Önbellek outputcache özniteliğini kullanabilirsiniz. Bu nedenle, özel sağlayıcınızdaki önbellek kendi önekinizle başlıyorsa önbelleği almanız/ayarlamanız yeterlidir.

İlgili konular