在静态内容的 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),因为您尝试创建的文件已存在。

感谢。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top