Запрос браузерам кэшировать наши изображения (ASP.NET/IIS)
Я просто выполнил приложение Google Page Speed против нашего сайта, и одна из рекомендаций заключалась в Использовать кеширование браузера. Расширение этого показало следующее:
Следующие кэшируемые ресурсы короткий срок службы свежести: Укажите срок действия не менее одной недели в будущее для следующих ресурсов:
<
длинный список изображений >
<
некоторые файлы javascript >
Как мне увеличить удлинение "времени жизни" отдельных изображений?
Это проект ASP.NET, работающий на IIS7.5
Ответы
Ответ 1
Я нашел ответ на мой вопрос в другом месте на этом сайте. Woot! (Не знаю, почему это не появилось, когда я впервые разместил это, но неважно, я попал туда в конце.)
Для тех, кого это интересует, ответ был таким (как писал Габриэль МакАдамс):
Вы делаете это в IIS. Если вы используете IIS 7, вы можете добавить заголовок в свой web.config. Его в разделе system.webServer.
<staticContent>
<clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>
Это приведет к тому, что весь статический контент истечет до HTTP-заголовка, установленного в 2020 году. Статический контент означает все, что не передается через механизм ASP.NET, например изображения, script файлы и стили.
Или для использования относительного срока действия, используйте это:
<staticContent>
<clientCache cacheControlMaxAge ="2.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>
Это приведет к тому, что весь статический контент истечет до HTTP-заголовка, установленного на 2 дня.
Ответ 2
Вам придется добавить Expires Header в свой статический контент, включая изображения, html, js, css файлы. Вы можете легко добавить заголовок expires в свой раздел web.configs system.webServer
с помощью IIS7:
<staticContent>
<clientCache httpExpires="Mon, 1 May 2020 05:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>
Ответ 3
Обычно вам нужно кэшировать все активы (css, js и images), html файл будет çache busting links, чтобы вы могут обновлять изображения.
Чтобы это сработало, файлы html не могут быть частью staticContent
. добавление нового обработчика для html файлов не позволяет им постоянно кэшироваться.
<staticContent>
<clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>
<handlers>
<add
name="HtmlHandler"
path="*.html"
verb="*"
type="System.Web.Handlers"
preCondition="integratedMode"
/>
</handlers>