«Истекает» в заголовке http для статического содержимого? как - PullRequest
4 голосов
/ 19 сентября 2008

Как лучше всего добавить «Expires» в заголовок http для статического содержимого? например. изображения, css, js

Веб-сервер IIS 6.0; язык классический ASP

Ответы [ 6 ]

6 голосов
/ 19 сентября 2008

Вы можете попробовать что-то вроде этого:

@ECHO OFF 
REM ---------------------------------------------------------------------------
REM Caching - sets the caching on static files in a web site
REM syntax 
REM     Caching.CMD 1 d:\sites\MySite\WWWRoot\*.CSS
REM 
REM   %1 is the WebSite ID
REM   %2 is the path & Wildcard - for example, d:\sites\MySite\WWWRoot\*.CSS
REM   _adsutil is the path to ADSUtil.VBS
REM ---------------------------------------------------------------------------

SETLOCAL

SET _adsutil=D:\Apps\Scripts\adsutil.vbs

FOR %%i IN (%2) DO (
  ECHO Setting Caching on %%~ni%%~xi
  CSCRIPT %_adsutil% CREATE W3SVC/%1/root/%%~ni%%~xi "IIsWebFile"
  CSCRIPT %_adsutil% SET    W3SVC/%1/root/%%~ni%%~xi/HttpExpires "D, 0x69780"
  ECHO.
)

Который устанавливает значение кэширования для каждого CSS-файла в корне сети на 5 дней, а затем запускает его так:

Caching.CMD 1 \site\wwwroot\*.css
Caching.CMD 1 \site\wwwroot\*.js
Caching.CMD 1 \site\wwwroot\*.html
Caching.CMD 1 \site\wwwroot\*.htm
Caching.CMD 1 \site\wwwroot\*.gif
Caching.CMD 1 \site\wwwroot\*.jpg

Вид болезненный, но выполнимый.

BTW - чтобы получить значение для HttpExpires, установите значение в графическом интерфейсе, затем запустите

AdsUtil.vbs ENUM W3SVC/1/root/File.txt

чтобы получить нужное значение

4 голосов
/ 19 сентября 2008

Я думаю, это то, что вам нужно, это истечение срока действия контента под заголовками HTTP в IIS Manager. Я использую шаблон размещения статического содержимого в папке, такой как ~ / Resources, и задаю срок действия для этой конкретной папки, чтобы срок ее службы был намного больше, чем у остальной части приложения.

Вот ссылка на полную статью: IIS 6.0 F1: Свойства веб-сайта - вкладка «Заголовки HTTP»

1 голос
/ 15 ноября 2015

Для других пользователей, пришедших из Google: не будет работать в iis6 , но работает в версиях 7 и выше.

В вашем web.config:

<staticContent>
  <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
0 голосов
/ 31 марта 2009

Ужасное решение, первая команда, созданная с помощью adsutil, завершится с ошибкой -2147024713 (0x800700B7), так как файлы, которые вы пытаетесь создать, уже существуют.

Спасибо.

0 голосов
/ 27 января 2009

в IIS admin вы можете установить его для каждого типа файлов или вы можете (для динамических, таких как aspx) сделать это в коде. После того, как вы настроите его, вам нужно проверить заголовки, которые выводятся с помощью такого инструмента, как плагин Mozilla firefox + live headers, или вы можете использовать веб-инструмент, такой как http://www.httpviewer.net/

0 голосов
/ 19 сентября 2008

Не знаю, ищите ли вы это, но это не дает моим страницам кэшироваться.

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-store">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
<META HTTP-EQUIV="Cache-Control" CONTENT="max-age=0">

Я получил их из статьи, на которую у меня больше нет ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...