Я пытаюсь сделать что-то, что, как мне казалось, будет довольно простым. Получите IIS 7, чтобы сообщить клиентам, что они могут кэшировать все изображения на моем сайте на определенное время, скажем, 24 часа.
Я пробовал шаг на http://www.galcho.com/Blog/post/2008/02/27/IIS7-How-to-set-cache-control-for-static-content.aspx, но безрезультатно. Я все еще получаю запросы, идущие на сервер с возвращением 304.
У кого-нибудь есть способ это сделать? У меня есть сайт с интенсивной графикой, и мои пользователи (как и мой сервер) подвергаются атакам каждый раз, когда они запрашивают страницу. Как ни странно, изображения, кажется, имеют «Cache-Control private, max-age = 3600», отображаемое в Firebug, но браузер все еще запрашивает их, когда я нажимаю F5.
Cache-Control
(max-age
) для разных типов mime или расширений файлов?Это неправда, Джефф.
Вам просто нужно выбрать папку в пользовательском интерфейсе диспетчера IIS 7 (например, изображения или событие - папка веб-приложения по умолчанию), а затем нажать «Заголовки ответа HTTP». Затем вам нужно щелкнуть «Установить общий заголовок ..» на правой панели и выбрать «Истекать срок действия веб-содержимого». Здесь вы можете легко настроить максимальный возраст в 24 часа, выбрав «После:», введя «24» в текстовое поле и выбрав «Часы» в поле со списком.
Ваш первый абзац относительно записи web.config правильный. Я бы добавил атрибут cacheControlCustom, чтобы установить для заголовка элемента управления кешем значение «public» или что-то еще, что необходимо в этом случае.
Конечно, вы можете добиться того же, предоставив записи (или файлы) web.config по мере необходимости.
Изменить: удалили запутанное предложение :)
источник
Cache-Control
(max-age
) заголовки для разных типов mime или расширений файлов?Я использую это
для кеширования статического содержимого на 500 дней с помощью общедоступного заголовка управления кешем.
источник
F5 Refresh имеет семантику «пожалуйста, перезагрузите текущий HTML и его прямые зависимости». Следовательно, вы должны ожидать, что любые ресурсы imgs, css и js, на которые напрямую ссылается HTML, также будут обновлены. Конечно, 304 является приемлемым ответом на это, но обновление F5 подразумевает, что браузер будет делать запрос, а не полагаться на свежее содержимое кеша.
Вместо этого попробуйте просто перейти в другое место, а затем вернуться.
Вы можете принудительно выполнить обновление после 304, удерживая ctrl при нажатой клавише f5 в большинстве браузеров.
источник
Чтобы кэшировать статический контент в течение 365 дней с помощью общедоступного заголовка управления кешем , IIS можно настроить с помощью следующих
Это переведется в такой заголовок:
Обратите внимание, что max-age - это дельта в секундах, выражаемая положительным 32-битным целым числом, как указано в разделах 14.9.3 и 14.9.4 RFC 2616 . Это представляет собой максимальное значение 2 ^ 31 или 2 147 483 648 секунд (более 68 лет). Однако, чтобы лучше гарантировать совместимость между клиентами и серверами, мы принимаем рекомендуемый максимум 365 дней (один год).
Как упоминалось в других ответах, вы можете использовать эти директивы также в web.config своего сайта для всего статического контента. В качестве альтернативы вы можете использовать его только для содержимого в определенном месте (в примере - 30-дневный публичный кеш для содержимого в папке "cdn"):
источник
есть простой способ: 1. используя web.config веб-сайта 2. в разделе «staticContent» удалите конкретное расширение файла и добавьте mimeMap 3. добавьте «clientCache»
источник