Нет истекает заголовок - PullRequest
3 голосов
/ 11 июля 2011

У меня есть отчет от YSlow:

(no expires) http://static3.scirra.net/avatars/128/40cfdcbd1b1ec1842e199c97c4b85a4a.png

(и еще много похожих). В моем файле web.config есть:

    <system.webServer>
            <staticContent>
                <clientCache httpExpires="Sun, 29 Mar 2020 00:00:00 GMT" cacheControlMode="UseExpires" />
            </staticContent>
            <caching>
                <profiles>
                    <add extension=".ashx" policy="CacheForTimePeriod"  kernelCachePolicy="DontCache" duration="01:00:00" />
                    <add extension=".png" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                </profiles>
            </caching>
        <rewrite>
            <rules>
                <rule name="Avatar">
                    <match url="avatars/([0-9]+)/(.*).png" />
                    <action type="Rewrite" url="gravatar.ashx?hash={R:2}&amp;size={R:1}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>

Разве это не правильно добавляет заголовок expires? Мои цели:

  • Gravatar.ashx получает изображение с сервера Gravatar
  • Результат кэширования сервера за 1 час (аналог SO)
  • Добавлен заголовок Expires, чтобы клиент не продолжал получать его с моего сервера

1 Ответ

1 голос
/ 11 июля 2011

В IIS вы можете определить заголовки HTTP.

В IIS щелкните папку с изображениями.Затем нажмите HTTP заголовки ответа.Затем установите общие заголовки ...

Отсюда вы можете проверить срок действия веб-контента и указать, сколько времени вы выберете.Вы также можете сделать это для JS и CSS.Будьте осторожны, какие файлы вы применяете это тоже.Кроме того, если вы установили очень большой срок действия и планируете изменить эти файлы, это может вызвать проблемы для вашего сайта.

Если у вас есть срок действия в 1 месяц для файла JS, а затем вы меняете его, используя то же имязатем, когда пользователь заходит на ваш сайт, он увидит, что содержание не истекло, и не будет запрашивать измененный файл с веб-сервера.Вы можете справиться с этим, установив умеренное время истечения срока действия, когда вы считаете, что содержимое может быть изменено, или вы можете применить номера версий к своим файлам JavaScript и CSS.

...