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

时间:2010-02-03 20:38:43

标签: iis iis-7 caching web-config http-headers

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

我见过这些文章,详细介绍了如何使用<clientCache />中的web.config元素执行此操作:

  

Client Cache <clientCache> (IIS.NET)
  Add Expires or Cache Control Header to static content in IIS (Stack Overflow)

但是,此设置似乎全局适用于所有静态内容。有没有办法只为某些目录或扩展名执行此操作?

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

  

/static/images
  /content/pdfs

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

请注意,我必须能够通过web.config执行此操作,因为我无法访问IIS控制台。

3 个答案:

答案 0 :(得分:212)

您可以在根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>

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

答案 1 :(得分:66)

您可以基于每个文件执行此操作。使用path属性包含文件名

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

答案 2 :(得分:-1)

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