# ashx 使用 IRequiresSessionState的效能問題 如果ashx需要Session的資訊,但**不需要**改變Session內容,建議再繼承 **System.Web.SessionState.IReadOnlySessionState**。 因為僅使用IRequiresSessionState,會導致Session被鎖定,ashx跑完後,需要一段時間才會釋放Session。 所以多次呼叫繼承IRequiresSessionState的ashx,每個ashx都需要排序處理,處理完後,下一個request也需要等待Session被釋放,導致次Request的情況效能不佳。 > 以下是僅使用IRequiresSessionState的情況, > 同時Request,到最後一個Request處理完已經2秒多 > ![](https://i.imgur.com/DflcYDM.png) > > 以下是加上IReadOnlySessionState的情況, > Request就不會因為Session鎖定而導致無法同時執行。 ![](https://i.imgur.com/ogGf3tF.png) * StatisticsData.ashx ``` java= <%@ WebHandler Language="C#" Class="StatisticsData" %> public class StatisticsData : IHttpHandler, // 要求使用Session System.Web.SessionState.IRequiresSessionState, // 僅唯讀Session,避免Session Lock System.Web.SessionState.IReadOnlySessionState { public void ProcessRequest(HttpContext context) { } public bool IsReusable { get { return false; } } } ```