我有一个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;
}
以下屏幕截图显示了请求花费了多长时间(这比预期的要“快”些):
奇怪的是,当我再次执行相同的请求时,它非常快。清除缓存没有任何作用!在清除缓存后,它仍然很快。如果我第二天尝试这些请求,则每种类型的第一个请求都会再次变慢。
有人知道如何解决此问题吗?