【问题标题】:Cache-Control Header & Browser Caching IIS7缓存控制标头和浏览器缓存 IIS7
【发布时间】:2009-09-02 14:41:41
【问题描述】:

我在 IIS7 中的网站上使用 Google Page Speed,我想知道如何设置

利用浏览器缓存 - 以下资源缺少缓存过期时间
利用代理缓存 - 考虑添加“Cache-Control : public" 标头到以下资源。

我在我的 web.config 中使用 doDynamicCompression 并且有点困惑如何设置这些?希望得到帮助

注意:引用正在使用http://www.iis.net/ConfigReference/system.webServer/httpCompression

【问题讨论】:

    标签: iis-7 compression


    【解决方案1】:

    以system.webServer下的web.config集为例

    <caching>
                <profiles>
                    <add extension=".png" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                    <add extension=".jpg" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                    <add extension=".gif" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" location="Any" />
                </profiles>
            </caching>
    

    这也可以在输出缓存下的 IIS 管理器中进行配置,但 GUI 不做的是设置“位置”属性。将其设置为 'Any' 将设置 Cache-Control:public。

    您可以阅读更多关于它的信息here

    【讨论】:

      【解决方案2】:

      我想你已经想通了,但请阅读在 IIS here 中设置内容过期。

      请注意,这仅适用于 IIS 提供的静态内容。如果您希望为动态内容(ASPX、PHP、ISAPI 等)设置缓存标头,则需要在应用程序中生成自己的 Expires 和 Cache-Control 标头。 IIS 将(完全正确)不会尝试将缓存控制标头应用于可能包含 Set-Cookie 标头或私有数据的动态页面。默认情况下,ASP 和 ASP.net 会自动为所有页面设置“Cache-Control: private”,但您可以在每个响应的基础上覆盖该行为。

      【讨论】: