Wir haben kürzlich damit begonnen, einige unserer ASP.NET MVC-Websites von unserer eigenen verwalteten Umgebung zu Azure zu verlagern. Eines der Probleme, die wir gesehen haben, ist, dass das clientseitige Caching bei der Bereitstellung dynamisch erstellter Inhalte nicht ordnungsgemäß funktioniert. Insbesondere werden die cache-bezogenen Header, die der HTTP-Antwort im Code hinzugefügt werden, entfernt.Von Azure gehostete ASP.NET MVC-Site löscht Client-Cache-bezogene HTTP-Header
Zum Beispiel werden die folgenden Header auf der alten Umgebung zurückgeführt, um den Kunden zu beraten, dass der Inhalt im Cache gespeichert werden können:
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
Aber auf Azure, die folgenden Header zurückgegeben statt:
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
Wie Sie sehen können, die Cache-Control
, Etag
, Expires
und Last-Modified
Header fallen gelassen wurden.
Ich habe eine Reihe von Vorschlägen bezüglich der Caching von statischen Inhalten gesehen, aber ich glaube nicht, dass diese in diesem Fall helfen werden. Ist es ein Fall, dass die Struktur des Azure-CDN das Caching auf diese Weise verhindert? Sollen stattdessen Azure-Blobs verwendet werden? Gibt es eine grundlegende Konfigurationsänderung, die möglicherweise übersehen wurde?
Vielen Dank im Voraus
Ich habe genau das gleiche Problem. Das Setzen der Header (zB Response.Cache.SetExpires) funktioniert lokal, wird aber beim Deployment entfernt ... – Gareth
Ich bin mir nicht sicher, aber laut diesem msdn Artikel http://msdn.microsoft.com/en-us/library /windowsazure/gg680299.aspx 'Wenn Sie Anwendungsinhalte programmgesteuert zwischenspeichern möchten, stellen Sie sicher, dass der Inhalt als zwischenspeicherbar gekennzeichnet ist, indem Sie HttpCacheability auf Public festlegen.' –
Hey, nur damit ich ein wenig besser verstehen kann - verwenden Sie Azure-Websites oder Azure-VMs? Wie konfigurieren Sie das HTTP-Caching? In der web.config über IIS programmgesteuert (OutputCache)? – Deano