改进由jquery ajax调用的通用处理程序的响应时间



我做了一个通用的处理程序(.ashx)来获取一些数据库值使用jquery ajax。我有几个问题:

  1. 为什么第一次调用处理程序总是最慢的一个?

  2. 是否有任何方法可以减少从HTTP-get/post点的响应时间,直到我从处理程序得到响应?我当前的代码看起来像这样:

    public void ProcessRequest(HttpContext context)
    {
         HttpContext.Current.Response.ContentType = "application/json";
         SOFAEntities ctx = new SOFAEntities();
         JavaScriptSerializer serializer = new JavaScriptSerializer();
         string systemKey = HttpContext.Current.Request["SystemKey"];
         try
        {
            SYSTEM_AUDIT_SHEET auditSheet = ctx.SYSTEM_AUDIT_SHEET.Where(s => s.SYSTEM_KEY == systemKeyDec).Select(s => s).OrderByDescending(s => s.AUDIT_SHEET_VERSION).First();
            HttpContext.Current.Response.Write(serializer.Serialize(auditSheet));
        }
        catch (Exception e)
        {
            HttpContext.Current.Response.Write(serializer.Serialize(new ErrorObj() { ErrorMessage = e.Message }));
        }
    }
    

1:有几个可能的原因,这些原因加起来会使第一个请求变慢,比如:

  • 代码必须被编译/jit
  • 池中没有数据库连接,所以必须建立一个数据库连接
  • 数据库请求没有缓存到数据库

2:您可以手动序列化对象,而不是使用使用反射的通用序列化器。

最新更新