2013-07-23 16 views
12

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

+0

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

+0

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.' –

+4

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

cevap

1
X-Powered-By:   ARR/2.5, ASP.NET 

ARR içinde

Teşekkür Uygulama İstek Yönlendirme kısaltmasıdır.

Inetmgr UI'ye gidin ve sunucu adına tıklayın ve 'Uygulama İsteği Yönlendirme Önbelleği' seçeneğini bulacaksınız.

'Önbellek yapılandırması'nı göreceksiniz, seçenekleri gözden geçirin. Ayrıca, orada 'Önbellek denetimi kuralları' seçeneğini işaretleyin. 'Kural ekle ...' seçeneğini tıklayın ve bununla oynamayı deneyin.

0

Azure Web siteleri ARR arkasında site. ARR bazı HTTP üstbilgilerini bırakacak ve kendi başına ekleyecektir, bu sizin doğrudan kontrolünüzün olmadığı bir şey değildir. Sorununuza daha iyi uyum sağlamak, statik içerik için Azure CDN kullanıyor olabilir. Bu, önbellek denetim başlıklarına dikkat eder ve kullanır. Blob saklama kabının üstüne bir CDN çalıştırabilirsiniz.

İlgili konular