输出缓存是否尊重响应标头?

时间:2009-12-17 17:18:18

标签: asp.net caching

我正在考虑使用ASP.NET输出缓存来提高自定义HTTP处理程序的性能。

如果我在响应中设置了到期标头,输出缓存是否足够智能以相应地缓存响应?或者我是否需要手动创建适当的CacheDependency?

如果我gzip响应并设置Content-Encoding标头,那么输出缓存是否足够智能,以防止在启用动态压缩时双重gzip压缩?如果输出缓存具有gzip压缩版本且不接受gzip的客户端请求资源会发生什么?

1 个答案:

答案 0 :(得分:0)

您可以将输出缓存设置为相对于接受标头缓存内容,而不是响应标头。来自this walkthrough on IIS 7.0 caching

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <directoryBrowse enabled="true" />
        <caching>
            <profiles>
                <add extension=".jpg" policy="CacheForTimePeriod"
                duration="00:00:10" varyByHeaders="Accept-Language" />
            </profiles>
        </caching>                  
  </system.webServer>
</configuration>

使用此配置,输出缓存将为用户代理要求的每种语言缓存不同的值。您可以向varyByHeaders添加“Accept-Encoding”以缓存同一资源的gzipped和非gzipped版本。

至于到期标题,据我所知,输出缓存没有注意到它们。您必须分别设置输出缓存到期和到期HTTP标头 - 毕竟不能保证您希望对两者使用相同的策略。