我正在考虑使用ASP.NET输出缓存来提高自定义HTTP处理程序的性能。
如果我在响应中设置了到期标头,输出缓存是否足够智能以相应地缓存响应?或者我是否需要手动创建适当的CacheDependency?
如果我gzip响应并设置Content-Encoding标头,那么输出缓存是否足够智能,以防止在启用动态压缩时双重gzip压缩?如果输出缓存具有gzip压缩版本且不接受gzip的客户端请求资源会发生什么?
答案 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标头 - 毕竟不能保证您希望对两者使用相同的策略。