Son zamanlarda, bazı ASP.NET MVC web sitelerini kendi yönetilen ortamımızdan Azure'a taşımaya başladık. Gördüğümüz sorunlardan biri, dinamik olarak oluşturulmuş içerik sunarken istemci tarafı önbelleğe alma işleminin düzgün çalışmadığı görülüyor. Özellikle, önbellekle ilgili başlıklar, koddaki HTTP yanıtına eklenir.Azure tarafından barındırılan ASP.NET MVC sitesi, istemci önbelleği ile ilgili HTTP üstbilgilerini düşürür
Örneğin, aşağıdaki başlıklar içeriği önbelleğe olabileceğini müşteriye tavsiye etmek için eski çevre üzerindeki döndürülür:
Cache-Control: public, max-age=31533144
Content-Disposition: attachment; filename=picture.png
Content-Length: 64326
Content-Type: image/png
Date: Tue, 23 Jul 2013 15:44:57 GMT
Etag: "845D3DD630A7AEF5B68EA7A09B670A4D"
Expires: Fri, 23 Aug 2013 14:57:22 GMT
Last-Modified: Tue, 23 Jul 2013 14:57:22 GMT
Server: Microsoft-IIS/7.5
Ama Azure üzerinde
aşağıdaki başlıklar yerine döndürülür:Content-Disposition: attachment; filename=picture.png
Content-Length: 64326
Content-Type: image/png
Date: Tue, 23 Jul 2013 15:44:57 GMT
Server: Microsoft-IIS/8.0
X-Powered-By: ARR/2.5, ASP.NET
Gördüğünüz gibi, Cache-Control
, Etag
, Expires
ve Last-Modified
başlıkları atıldı.
Statik içeriğin önbelleğe alınmasıyla ilgili bir dizi öneri gördüm, ancak bunların bu durumda yardımcı olacağına inanmıyorum. Azure CDN'nin yapısının bu şekilde önbelleğe almayı önlediği bir durum mu? Azure blobları yerine kullanılmalı mı? Gözden kaçmış olabilecek temel bir yapılandırma değişikliği var mı? peşin
Bu aynı sorunu yaşıyorum. Başlıkları (örneğin Response.Cache.SetExpires) yerel olarak çalışır, ancak dağıtıldığında çıkarılır ... – Gareth
Emin değilim, ancak bu msdn makalesine göre http://msdn.microsoft.com/en-us/library /windowsazure/gg680299.aspx 'Uygulama içeriğini programlı olarak önbelleğe almak istiyorsanız, içeriğin HttpCacheability öğesini Herkese göre ayarlayarak önbelleğe alınabilir olarak işaretlendiğinden emin olun.' –
Hey, biraz daha iyi anlayabiliyorum - Azure Web Sitelerini veya Azure VM'lerini mi kullanıyorsunuz? Ayrıca, HTTP önbelleğini nasıl yapılandıracaksınız? Web.config'te, IIS aracılığıyla, programsal olarak (OutputCache)? – Deano