如何在 IIS7中配置每个文件夹和扩展的静态内容缓存?

我想在 IIS7中为我的 ASP.NET 网站的静态内容缓存设置规则。

我看过这些文章,其中详细介绍了如何使用 web.config中的 <clientCache />元素:

客户端缓存 <clientCache>(IIS.NET)
将过期或缓存控制头添加到 IIS (堆栈溢出)中的静态内容

但是,此设置似乎全局应用于所有静态内容。有没有一种方法可以只对某些目录或扩展执行此操作?

例如,我可能有两个目录需要单独的缓存设置:

/static/images
/content/pdfs

是否可以根据扩展名和文件夹路径设置发送缓存头(max-ageexpires等)的规则?

请注意,我必须能够通过 web.config这样做,因为我没有访问 IIS 控制台。

123142 次浏览

您可以在您的根 web.config中为整个文件夹设置特定的缓存头:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- Note the use of the 'location' tag to specify which
folder this applies to-->
<location path="images">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
</staticContent>
</system.webServer>
</location>
</configuration>

或者您可以在内容文件夹的 web.config文件中指定这些内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
</staticContent>
</system.webServer>
</configuration>

我不知道有一种内置的机制来针对特定的文件类型。

您可以根据每个文件进行此操作

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="YourFileNameHere.xml">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
</configuration>

我也有同样的问题。对我来说,问题是如何配置图像的缓存限制。我偶然发现了这个网站,它提供了一些关于如何处理这个问题的程序的见解。希望对你也有帮助 链接: [ http://varvy.com/pagespeed/cache-control.html ] rel = “ nofollow norefrer”> https://varvy.com/pagespeed/cache-control.html ]