ashx文件的输出(服务器端)缓存

时间:2011-03-16 23:21:07

标签: c# asp.net outputcache ashx

我正在尝试在我的网站中的所有ashx文件上启用输出缓存。我试图阻止服务器在每个请求上生成文件 - 不要试图告诉浏览器缓存文件。

我已将我的ashx文件提炼为这个简单的代码:

public class DefaultStyles : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/css";
        StringBuilder styleSheet = new StringBuilder();
        styleSheet.AppendLine(string.Format("/* Generated: {0}, {1} */", DateTime.Now.ToShortDateString(),                                                DateTime.Now.ToLongTimeString()));
        context.Response.Write(styleSheet.ToString());
    }
}

在我的web.config文件中,我有这个:

<system.webserver>
    <caching enabled="true">
      <profiles>
        <add extension=".ashx" policy="CacheForTimePeriod" duration="00:01:00"  />
      </profiles>
    </caching>
</system.webserver>

但是,我对ashx文件的每个请求都会生成一个包含当前日期和时间的新版本。

我做错了什么?

感谢。

2 个答案:

答案 0 :(得分:1)

也许这会有所帮助?

http://objectmix.com/dotnet/393333-output-caching-custom-http-handler.html

似乎表明,由于您没有使用普通页面处理程序,因此不会调用输出缓存模块。

西蒙

答案 1 :(得分:1)

我实际上做的一切都是正确的,只是没有在合适的环境中进行测试。一旦我在IIS 7服务器上部署了上面的简单示例,它就按预期使用上面的代码工作了。应该注意,这个DID不适用于我们的IIS 6服务器。我没有意识到这是IIS 7中唯一可用的新功能