AJAX在第一个请求上请求较长的TTFB时间

时间:2018-08-06 15:00:04

标签: jquery ajax http iis asmx

我有一个jquery前端应用程序。后端(ASMX Webservice)在IIS服务器上。当我执行第一个http请求时,有一些奇怪的行为: TTFB时间太长,大约4-10秒。客户端一次执行完每个请求后,下一个请求很快。

这是我的代码中的ajax请求之一:

$.ajax({
  type: "POST",
  url: UrlToWebservice + "Stamm_SELECT_Strassen",
  data: {
    charStr: charStr
  },
  dataType: "xml",
  success: function(response) {
    $("#input_strasse_datalist").empty();
    var strassen = new Array();

    $(response).find("STRASSE").each(function() {
    var ort = $(this).find("PLZ").find("ORT").text();
var strasse = $(this).find("NAME").text();
        var plz = $(this).find("PLZ").find("plz").text();
        var arplz = $(this).find("PLZ").find("AR").first().text();
        var ort = $(this).find("PLZ").find("ORT").text();
        var arstrasse = $(this).find("AR").first().text();
        $("#input_strasse_datalist").append("<option data-ar = " + arstrasse + "" + ' data-plz=' + plz + '' + ' data-arplz=' + arplz + '' + ' data-ort=' + ort + '' + ' value="' + strasse + " (" + plz + ", " + ort + ')">' + strasse + " (" + plz + ", " + ort +")</option>");
        window.localStorage.setItem("arstrasse", arstrasse);
      });
  },
  error: function() {
    window.location.hash = "httperror";
  }
});

没什么特别的-还是我错过了任何ajax参数? 以下代码称为后端功能(NHibernate):

[WebMethod]
public List<STRASSE> Stamm_SELECT_Strassen(string charStr)
{
  string port = "Weimar";
  var session = NHibernateHelper.GetSession();
  List<STRASSE> strassennamen = null;
  List<STRASSE> strassenarray = Enumerable.Empty<STRASSE>().ToList<STRASSE>();

  var arplz = session.CreateQuery("from PLZ P where P.ORT = :port").SetParameter("port", port ).List<PLZ>();
  foreach (var n in arplz)
  {
     strassennamen = session.CreateQuery("from STRASSE S where S.NAME LIKE :charStr and S.PLZ.AR =:parplz").SetParameter("charStr", charStr + "%").SetParameter("parplz", n.AR).SetMaxResults(10).List<STRASSE>().ToList();
     strassenarray.AddRange(strassennamen);
  }
  //var strassennamen = session.CreateSQLQuery("SELECT distinct NAME as { STRASSE.NAME }, AR as { STRASSE.AR} from STRASSE S where S.NAME LIKE :charStr ").SetParameter("charStr", charStr + "%").SetMaxResults(10).List<STRASSE>();
  //, new PLZ(P.PLZ), PLZ P  and S.ARPLZ = P.AR
  NHibernateHelper.CloseSession(session);
  return strassenarray;
}

以下屏幕截图显示了请求花费了多长时间(这比预期的要“快”些):

long ttfb

奇怪的是,当我再次执行相同的请求时,它非常快。清除缓存没有任何作用!在清除缓存后,它仍然很快。如果我第二天尝试这些请求,则每种类型的第一个请求都会再次变慢。

有人知道如何解决此问题吗?

0 个答案:

没有答案