4

在静态内容的 http 标头中添加“过期”的最佳方法是什么?例如。图片、CSS、JS

Web服务器是IIS 6.0;语言是经典的 ASP

4

6 回答 6

6

你可以尝试这样的事情:

@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.
)

它将 Web 根目录中每个 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 的值,请在 GUI 中设置值,然后运行

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

获得您需要的实际价值

于 2008-09-19T17:52:21.267 回答
4

我认为这就是您所追求的,它是 IIS 管理器中 HTTP 标头下的内容过期。我使用将静态内容粘贴在 ~/Resources 之类的文件夹下的模式,并在该特定文件夹上设置过期时间,以使其具有比应用程序的其余部分更长的寿命。

这是完整文章的链接: IIS 6.0 F1:网站属性 - HTTP 标头选项卡

于 2008-09-19T14:36:00.507 回答
1

对于来自谷歌的其他人:这在 iis6 中不起作用,但在 7 及更高版本中起作用。

在您的 web.config 中:

<staticContent>
  <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
于 2015-11-15T08:48:44.860 回答
0

在 IIS 管理员中,您可以为每种文件类型设置它,或者您可以(对于像 aspx 这样的动态文件)在代码中进行设置。设置完成后,您需要使用 Mozilla firefox + live headers plugin 之类的工具检查输出的标头 - 或者您可以使用基于 Web 的工具,例如http://www.httpviewer.net/

于 2009-01-27T01:13:00.113 回答
-2

我不知道这是否是您要查找的内容,但它确实可以防止我的页面被缓存。

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

我从网上的一篇文章中得到这些,我不再有参考。

于 2008-09-19T14:32:26.100 回答
-3

糟糕的解决方案,使用 adsutil 创建的第一个命令将失败并出现错误 -2147024713 (0x800700B7),因为您尝试创建的文件已经存在。

谢谢。

于 2009-03-31T19:25:24.750 回答