IIS7 Web.Config 缓存 - 这里有什么区别,它们如何整合在一起?

10

在IIS7中我有设置缓存选项的能力。这些选项会被添加到我的web.config中,如下所示...

    <caching maxCacheSize="262144">
        <profiles>
            <add extension=".png" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
            <add extension=".jpeg" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
            <add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
            <add extension=".css" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
            <add extension=".js" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" duration="00:00:30" />
        </profiles>
    </caching>

不过,对于“缓存”我也有以下内容

    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="90.00:00:00" />
        <remove fileExtension=".js" />
        <mimeMap fileExtension=".js" mimeType="text/javascript" />
    </staticContent>

这两个配置有什么区别?它们都嵌套在<system.webServer>标签中,因此对于IIS7来说都是有效的。

另外,在使用这些配置时应该采取什么正确的方法?我目前只在我的静态资源文件夹中使用它。我不会在其他任何东西上使用缓存。

提前感谢。


Chase,你有没有找到关于这个问题的更多信息?StaticContent貌似正在干扰我的缓存配置文件,我想了解一些可以分享的任何信息。 - JGood
在我提问之后,我有点忘记了它。我想要一个好的规范答案。 - Chase Florell
2个回答

4
主要区别在于:
  • 第一个用于服务器端缓存动态输出,例如aspx页面(基本上将页面输出保留在内存中以供后续请求使用)。正如@artem-vertiy的回答所指出的那样,将其用于静态内容没有意义。

  • 第二个是“互联网侧”的:通过编写标准响应头实现,它告诉客户端浏览器和公共代理如何管理缓存文件。


如果您在添加扩展名为“.png”的标签中指定location="ServerAndClient",则可以在客户端和服务器上进行缓存。 - Rashmi Pandit

1
我注意到人们经常混淆这些事情,并在文章中推荐像第一个块中那样的东西,即对静态资源进行输出缓存。 输出缓存
输出缓存不适用于静态文件,如HTML、JPG或GIF文件,对于从经常更改的数据库中读取的动态ASP.NET或PHP页面可能会导致更多的内存开销。
因此,
<add extension=".png" ../>
<add extension=".jpeg" ../>
etc.

如果没有针对 .png 或 .jpeg 等的 ashx 处理程序,它至少是无用的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接