我创建了一个HttpHandler,以下是Web.config中的设置
<add verb="*" path="*.png" type="MvcApplication1.Handler2"/>
IsReusable = true in HttHandler
假设我的应用程序中有20个用户,他们正在尝试输入以下网址
http://Domainname/abc.jpg
众所周知,如果IsReusable = false
,通过响应结束,HttpApplication的HandlerRecycleList将设置为null但是在以下情况下不是这样
IsReusable = true
问题
IsReusable = true
时的所有用户都是通用的?答案 0 :(得分:3)
是的,处理程序对所有用户都是通用的。它与任何会话对象无关。
如果将Reusable设置为true,则实例将被缓存并在其他请求中重用,只需反复调用其ProcessRequest方法,而无需创建新实例。处理程序不会为此查看会话。该应用程序将根据需要创建尽可能多的处理程序来处理当前负载。
因此,如果您有20个用户同时访问您的应用,则将创建20个实例。另一方面,如果有20个用户按顺序访问您的处理程序,则只会重新使用一个实例。
您无法控制创建的实例数量,这是按需完成的。
缺点是如果你在处理程序中使用大量内存,这将对内存使用产生负面影响,因为这些实例将在GC周期中存活。
您还必须确保processRequest结尾处的状态对下一个请求有效。