题
在静态内容的 http 标头中添加“过期”的最佳方法是什么?例如。图像、CSS、JS
Web服务器是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.
)
将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
有点痛苦,但可行。
BTW - 要获取HttpExpires的值,请在GUI中设置值,然后运行
AdsUtil.vbs ENUM W3SVC/1/root/File.txt
获取您需要的实际值
其他提示
我认为这就是你所追求的,它是IIS管理器中HTTP标头下的内容过期。我使用在〜/ Resources这样的文件夹下粘贴静态内容的模式,并将该特定文件夹的过期时间设置为比应用程序的其余部分长得多。
以下是完整文章的链接: IIS 6.0 F1:网站属性 - HTTP标头选项卡
对于来自谷歌的其他人:这将在iis6中不起作用,但在7及以上版本中有效。
在你的web.config中:
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
在IIS管理员中,您可以为每种文件类型设置它,或者您可以(对于像aspx这样的动态类型)在代码中执行此操作。设置完成后,需要检查使用Mozilla firefox + live headers插件等工具输出的标题 - 或者您可以使用基于Web的工具,如 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),因为您尝试创建的文件已存在。
感谢。
不隶属于 StackOverflow