IIS7 Web.Config缓存 - 这里有什么不同,它们如何结合在一起?

时间:2011-01-30 04:54:45

标签: caching iis-7 web-config asp.net-4.0

在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都有效。

另外,使用这些时的正确方法是什么?我目前只使用这是我的静态资源文件夹。我不会在其他任何事情上使用此缓存。

提前致谢。

2 个答案:

答案 0 :(得分:4)

主要区别在于

  • 第一个用于服务器端缓存动态输出,例如aspx页面(基本上将页面输出保留在内存中以用于后续请求)。正如@ artem-vertiy的回答指出的那样,将它用于静态内容毫无意义。

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

答案 1 :(得分:1)

我注意到人们常常混淆上面的内容,并在第一个块中写出推荐内容的文章,即静态资源的输出缓存

Output caching

  

对于静态文件,例如HTML,JPG 或者,输出缓存是不必要的   GIF文件,可能会导致动态ASP.NET或更多的内存开销   从经常更改的数据库中读取的PHP页面

因此

<add extension=".png" ../>
<add extension=".jpeg" ../>
etc.
至少当你没有.png或.jpeg等的ashx http处理程序时,

是没用的。