【发布时间】:2010-03-17 14:26:57
【问题描述】:
我有一个 IHttpHandler 作为 jQuery 自动完成输入字段的来源。在处理程序的构造函数中,我生成一个在请求之间保持相当静态的索引(可能需要每天重建一次)。
如何在调用之间缓存索引?调试表明为每个请求调用构造函数。我已将 IsReusable 设置为“false”。
【问题讨论】:
标签: asp.net httphandler web-services
我有一个 IHttpHandler 作为 jQuery 自动完成输入字段的来源。在处理程序的构造函数中,我生成一个在请求之间保持相当静态的索引(可能需要每天重建一次)。
如何在调用之间缓存索引?调试表明为每个请求调用构造函数。我已将 IsReusable 设置为“false”。
【问题讨论】:
标签: asp.net httphandler web-services
您的处理程序传递了一个HttpContext,这意味着它可以访问应用程序缓存(例如context.Cache["Foo"] = myVal)并且可以在那里保存值。但是,如果您的处理程序实现了 IRequiresSessionState 接口,您也可以将值保存在 Session 中(例如 context.Session["Bar"])。
【讨论】:
HttpHandlers 有一个特殊的属性 IsReusable。您可以在 Handler 实现中覆盖该属性并将其设置为返回 True。 IsReusable 是一个值,指示另一个请求是否可以使用 IHttpHandler 实例。
所以第一次访问处理程序时会创建处理程序实例,并且在下一次请求时,相同的实例会返回请求 - 所以你的缓存技巧在这种情况下将正常工作。
http://msdn.microsoft.com/en-us/library/system.web.ihttphandler.isreusable.aspx
【讨论】: