Просить браузеры кэшировать наши изображения (ASP.NET/IIS) - PullRequest
19 голосов
/ 10 июня 2010

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

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

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

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

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

Ответы [ 3 ]

49 голосов
/ 11 июня 2010

Я нашел ответ на свой вопрос в другом месте на этом сайте.Woot!(Не уверен, почему это не появилось, когда я впервые опубликовал это, но не берите в голову, я добрался там в конце.)

Для заинтересованных, ответ был таким (как отправлено Габриэлем МакАдамсом):


Вы делаете это в IIS.Если вы используете IIS 7, вы можете добавить заголовок в ваш файл web.config.Он находится в разделе system.webServer.

<staticContent>
    <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>

Это приведет к тому, что весь статический контент будет иметь HTTP-заголовок expires, установленный на 2020 год. Статический контент означает все, что не обрабатывается механизмом ASP.NET.например, изображения, файлы сценариев и таблицы стилей.

Или для использования относительного срока действия используйте:

<staticContent>
    <clientCache cacheControlMaxAge ="2.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>

Это приведет к тому, что для всего статического содержимого будет задан заголовок HTTP expires, равный 2дней.

4 голосов
/ 10 июня 2010

Вам нужно будет добавить Expires Header к вашему статическому контенту, включая изображения, html, js, css файлы.Вы можете легко добавить заголовок expires в раздел system.webServer вашего web.config, используя IIS7:

<staticContent>
    <clientCache httpExpires="Mon, 1 May 2020 05:00:00 GMT" cacheControlMode="UseExpires" />
</staticContent>
2 голосов
/ 15 ноября 2015

Обычно вы хотите кэшировать все ресурсы (css, js и images), html-файл будет иметь разархивировать ссылки , чтобы вы могли обновлять изображения.

ВЧтобы это работало, 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>
...