У меня есть действие контроллера, которое возвращает изображения из базы данных. Эти изображения статичны, они никогда не изменятся, и только тогда, когда они "изменятся", это когда элементу изображения будет присвоен новый идентификатор.
Я назначил
[OutputCache(CacheProfile = "ProductImages", Duration = 36000000)]
К действию,
<add name="ProductImages" enabled="true" duration="600000" varyByCustom="ProductImages" varyByParam="" />
В web.config-> system.web-> caching-> outputcacheSettings-> outputCacheProfiles и
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" />
Под system.webserver-> staticContent.
Я создаю его, обновляю страницу, получаются изображения. Снова обновляю страницу, изображения берутся из кеша. Однако, когда я меняю строку кода, перестраиваю, снова обновляю ... все изображения повторно выбираются из базы данных. В базе данных хранятся не только тысячи и тысячи изображений, но и развертывание в Windows Azure, поэтому оптимизация очень важна.
Обратите внимание, что стандартный «статический контент» остается кешированным, например Site.css и JQuery.js. Но чего нет, так это изображений.
URL-адрес доступа к изображению всегда статичен и имеет вид ~ / Media / Image / 1a00d817-6525-4d13-82bc-d0f24d26f29c.
Я понятия не имею, как это исправить, потому что, хотя это допустимо во время разработки, если каждый раз, когда я повторно развертываюсь в Azure, кеш всех изображений сбрасывается ... дрожит.
Идеи приветствуются!
РЕДАКТИРОВАТЬ:
Я также пробовал добавить расширение в конец URL-адреса (например, .jpg), чтобы браузер воспринимал его как статический контент, и добавил
<add extension=".jpg" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" location="Client" duration="365.00:00:00"/>
в system.webserver-> caching-> profiles, но безрезультатно.
Заголовки с включенными предложениями дарина (всегда повторно запрашиваются):
Cache-Control:private, max-age=600000
Content-Length:4593
Content-Type:image/jpeg
Date:Tue, 19 Feb 2013 08:55:27 GMT
Expires:Tue, 26 Feb 2013 07:35:26 GMT
Last-Modified:Tue, 19 Feb 2013 08:55:26 GMT
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:4.0
X-Powered-By:ASP.NET
Заголовки с location = "Any" (повторный запрос только при восстановлении):
Cache-Control:public, max-age=600000
Content-Length:21461
Content-Type:image/jpeg
Date:Tue, 19 Feb 2013 08:57:03 GMT
Expires:Tue, 26 Feb 2013 07:37:03 GMT
Last-Modified:Tue, 19 Feb 2013 08:57:03 GMT
Server:Microsoft-IIS/8.0
Vary:*
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:4.0
X-Powered-By:ASP.NET