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),因为我们尝试创建的文件已经存在。
谢谢。