«Срок действия истекает» в http-заголовке для статического контента?как

StackOverflow https://stackoverflow.com/questions/102215

  •  01-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

@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

Немного больно, но действенно.

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

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

чтобы получить фактическое значение, которое вам нужно

Другие советы

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

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

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

В вашем web.config:

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

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

Я не знаю, то ли это вы ищете, но это предотвращает кэширование моих страниц.

<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">

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

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

Спасибо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top