http标头中的"过期"是否包含静态内容?如何

时间:2020-03-06 14:26:09  来源:igfitidea点击:

在http标头中为静态内容添加" Expires"的最佳方法是什么?例如。图像,CSS,JS

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

解决方案

我不知道这是否是我们要寻找的东西,但是它确实使我的页面不被缓存。

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

我从网上的一篇文章中得到了这些,而我不再对其进行参考。

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

这是全文的链接:IIS 6.0 F1:"网站属性"的" HTTP标头"选项卡

我们可以尝试这样的事情:

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

它将网络根目录中每个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管理员中,我们可以为每种文件类型设置它,也可以(对于aspx等动态文件)在代码中进行设置。设置完成后,我们需要使用Mozilla firefox + live headers plugin之类的工具检查输出的标题,或者可以使用基于Web的工具,例如http://www.httpviewer.net/

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

谢谢。