Недавно мы начали перемещать некоторые из наших веб-сайтов ASP.NET MVC из нашей собственной управляемой среды в Azure. Одна из проблем, которые мы видели, заключается в том, что кэширование на стороне клиента не работает должным образом при доставке динамически созданного контента. В частности, заголовки, связанные с кешем, добавленные в ответ HTTP в коде, удаляются.
Например, в старой среде возвращаются следующие заголовки, чтобы сообщить клиенту, что содержимое может быть кэшировано:
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
Но на Azure вместо этого возвращаются следующие заголовки:
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
Как вы можете видеть, заголовки Cache-Control
, Etag
, Expires
и Last-Modified
были удалены.
Я видел ряд предложений относительно кэширования статического контента, но я не думаю, что это поможет в этом случае. Это случай, когда структура Azure CDN предотвращает кеширование таким образом? Должны ли использоваться лазурные пятна? Есть ли основное изменение конфигурации, которое может быть упущено?
Заранее спасибо