设置HTTPHandler是可重用的属性

时间:2010-09-15 17:13:17

标签: asp.net httphandler

我正在使用HTTP处理程序来引发文件下载。基本上,“ProcessRequest”中的代码从数据库中检索数据,创建现有模板电子表格的临时副本,并以GUID作为名称,并写入从数据库中检索的数据使用COM逐个单元地进入它,引发文件下载并删除创建的临时电子表格。整个过程通常需要大约4-5分钟。但是当我们尝试同时测试这个过程时,大约需要15分钟。

我想知道将'IsReusable'布尔设置为true是否有助于提高性能。但我不确定,是否安全。

有人可以帮我吗?

**更新:**因为我为每个创建的临时文件使用不同的文件名,我假设不存在安全问题。但仍然不确定。

2 个答案:

答案 0 :(得分:4)

IsReusable属性将完成你的想法。每次发出请求时,都不会构建一个全新的Handler,而是重用现有的Handler。如果你有在构造函数中创建的实例变量,它可以提高性能,但前提是它们的创建成本很高。

此外,如果您在处理程序中维护任何类型的状态,那么无论您将其保留在何种状态,都将存在于下一个请求中。这可能会产生意想不到的副作用。

如果您的大部分流程都在ProcessRequest方法中进行,那么您的瓶颈就在那里,您应该使用分析来查看可以加快性能的位置。

答案 1 :(得分:1)

如果希望此HttpHandler实例处理多个请求,则IsReusable属性仅设置为true。可能有一个不同的Web.Config设置可以解决您的问题,可能是httpRuntime属性的executionTimeout属性:

<httpRuntime appRequestQueueLimit="100" executionTimeout="600" />  

更多信息:

http://articles.sitepoint.com/article/web-config-file-demystified