Подтвердить что ты не робот

Запрос браузерам кэшировать наши изображения (ASP.NET/IIS)

Я просто выполнил приложение Google Page Speed ​​ против нашего сайта, и одна из рекомендаций заключалась в Использовать кеширование браузера. Расширение этого показало следующее:

Следующие кэшируемые ресурсы короткий срок службы свежести: Укажите срок действия не менее одной недели в будущее для следующих ресурсов:

< длинный список изображений >
< некоторые файлы javascript >

Как мне увеличить удлинение "времени жизни" отдельных изображений?

Это проект ASP.NET, работающий на IIS7.5

4b9b3361

Ответ 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>