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

Cha*_*ell 10 iis-7 caching 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>
Run Code Online (Sandbox Code Playgroud)

但是,我还得到了以下"缓存"

    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="90.00:00:00" />
        <remove fileExtension=".js" />
        <mimeMap fileExtension=".js" mimeType="text/javascript" />
    </staticContent>
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢.

Sup*_*deh 4

主要区别在于

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

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