Burada bir OutputCache parametresini yoğun olarak kullandığım bir ASP.NET MVC 2 sitesi yapıyorum. Ancak, bir endişem var: önbelleğe almayı kullanmak, kimlik doğrulamasını etkileyebilir.ASP.NET MVC OutputCache'i kullanırken, kullanıcının kimliği doğrulanıp yansıtmadığına bağlı olarak içeriği görüntüle
Tüm sayfalarımda, kullanıcının oturum açıp açmadığını gösteriyorum. Ayrıca, bazı Görünümlerimde, bazı sayfa içeriğinin görüntülenip görüntülenmeyeceğini belirlemek için kullanıcı rolüne dayalı olarak filtreleme yapıyorum (örneğin, Düzenle Bağlantısının sayfalarımdan birinde yalnızca Moderatörün rollerinde bulunan kullanıcılara veya Yönetici).
OutputCache'i kullanarak bu Görünümlerimin dinamik olarak değiştirilmesine müdahale edersiniz? Öyleyse, önbelleğe alma işlemini ortadan kaldırmadan bu sorunu nasıl çözebilirim?
Yetki gerektirmeyen bir yöntemim varsa, ancak kullanıcı bir denetleyici ise Görünüm içinde bir Düzenleme bağlantısı eklerse ne olur? Bu durumda, bir sorunun altındaki bağlantının, bayrağın, düzenlemenin ve diğer düğmelerin nasıl çalıştığına benzeyen bir şeyi başarmaya çalışıyorum - bu da OutputCache'i kullanmıyor mu? Cevabınız için teşekkürler! –
Sadece http://blog.stevensanderson.com/2008/10/15/partial-output-caching-in-aspnet-mvc/ (daha sonra düzeltilen eski bir sorun hakkında) tökezledim, ki bu bana bir fikir verdi - Eğer OutputCache bununla o kadar kötüyse, kullanıcının oturum açıp açmadığına ve kullanıcının hangi rollere sahip olduğuna bağlı olarak farklı kopyalar yaratan özel bir önbellek özniteliği/filtresi ** oluşturmak mümkündür. Kullanıcı adı, sayfanın üst kısmında kullanıcının adını yazacağım - ** bu mümkün **? –
Önbellek girişlerle dolup taşacak olduğundan, kullanıcı başına önbelleğe almak genellikle kötü bir fikirdir. Donut önbelleğe alma, senaryo için önemliyse, bir yanıt filtresi de kullanabilirsiniz. İsteğin başında, bazılarını anlayan bir filtre yükleyin [!! SUBSTITUTION DATA !!] deseninde, WriteSubstitute() öğesinin bu deseni yanıt akışına yazmasını sağlayın, ardından isteğinizin sonunda filtreniz gerçek Response.WriteSubstitution() yöntemini çağırır. – Levi