静态内容的http标头中的“Expires”?如何

时间:2008-09-19 14:22:17

标签: http iis asp-classic

在静态内容的http标头中添加“Expires”的最佳方法是什么?例如。图像,css,js

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

6 个答案:

答案 0 :(得分: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

获取您需要的实际值

答案 1 :(得分:4)

我认为这就是你所追求的,它是IIS管理器中HTTP标头下的内容过期。我使用在〜/ Resources这样的文件夹下粘贴静态内容的模式,并将该特定文件夹的过期时间设置为比应用程序的其余部分长得多。

以下是完整文章的链接: IIS 6.0 F1: Web Site Properties - HTTP Headers Tab

答案 2 :(得分:1)

对于来自谷歌的其他人:这将在iis6中不起作用,但在7及以上版本中有效。

在你的web.config中:

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

答案 3 :(得分:0)

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

答案 4 :(得分:-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">

我从一篇文章中得到了这些,我不再有参考资料。

答案 5 :(得分:-3)

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

感谢。