在静态内容的http标头中添加“Expires”的最佳方法是什么?例如。图像,css,js
Web服务器是IIS 6.0;语言是经典的ASP
答案 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),因为您尝试创建的文件已存在。
感谢。