Niedawno rozpoczęliśmy przenoszenie niektórych witryn ASP.NET MVC z naszego zarządzanego środowiska do platformy Azure. Jednym z problemów, które zauważyliśmy, jest to, że buforowanie po stronie klienta nie działa prawidłowo podczas dostarczania dynamicznie tworzonej treści. W szczególności nagłówki związane z pamięcią podręczną dodane do odpowiedzi HTTP w kodzie są usuwane.Witryna ASP.NET MVC hostowana w usłudze Azure upuszcza nagłówki HTTP związane z pamięcią podręczną klienta.
Na przykład, następujące nagłówki są zwracane na starym środowisku, aby doradzić klientowi, że zawartość może być buforowane:
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
Ale Azure następujące nagłówki są zwracane zamiast:
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
Jak widać, nagłówki Cache-Control
, Etag
, Expires
i Last-Modified
zostały zaniechane.
Widziałem wiele sugestii dotyczących buforowania treści statycznych, ale nie sądzę, że będą one pomocne w tym przypadku. Czy jest tak, że struktura Azure CDN zapobiega buforowaniu w ten sposób? Czy zamiast tego należy używać bloków Azure? Czy istnieje podstawowa zmiana konfiguracji, która mogła zostać przeoczona?
góry dzięki
Mam dokładnie ten sam problem. Ustawianie nagłówków (np. Response.Cache.SetExpires) działa lokalnie, ale zostaje usunięte po wdrożeniu ... – Gareth
Nie jestem pewien, ale zgodnie z tym artykułem msdn http://msdn.microsoft.com/en-us/library /windowsazure/gg680299.aspx "Jeśli chcesz programowo buforować zawartość aplikacji, upewnij się, że zawartość jest oznaczona jako pamięć podręczna, ustawiając HttpCacheability to Public." –
Hej, tylko po to, abym mógł zrozumieć trochę lepiej - czy korzystasz z witryn Azure lub maszyn wirtualnych Azure? A także, w jaki sposób konfigurujesz buforowanie HTTP? W web.config, przez IIS, programowo (OutputCache)? – Deano