我有一個IHttpHandler作爲jQuery自動完成輸入字段的源。在處理程序的構造函數中,我生成一個在請求之間保持相當靜態的索引(需要每天重建一次)。如何在調用IHttpHandler之間保存數據?
如何緩存呼叫之間的索引?調試表明爲每個請求調用構造函數。我已將IsReusable設置爲「false」。
我有一個IHttpHandler作爲jQuery自動完成輸入字段的源。在處理程序的構造函數中,我生成一個在請求之間保持相當靜態的索引(需要每天重建一次)。如何在調用IHttpHandler之間保存數據?
如何緩存呼叫之間的索引?調試表明爲每個請求調用構造函數。我已將IsReusable設置爲「false」。
您的處理程序通過了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