如何在IIS7中为每个文件夹和扩展名configuration静态内容caching?

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

我已经看到了这些文章,详细介绍了如何使用web.config<clientCache />元素进行操作:

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

但是,此设置似乎全局适用于所有静态内容。 有没有办法做到这一点只是为了某些目录或扩展?

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

/static/images
/content/pdfs

是否有可能build立规则发送caching标题( max-ageexpires等)基于扩展名和文件夹path?

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

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

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

我不知道内置的机制来定位特定的文件types。

你可以在每个文件的基础上做到这一点。 使用path属性来包含文件名

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