
问题是如何加快ASP.NET web应用程序的加载速度,我发现web应用程序过滤功能的加载时间是不可接受的。过滤器列表是从数据库生成的。请参阅下列代码:
这个函数在.js中,正在调用webservice方法。
function filterSetup() {
filterChanged = true;
var reset = true;
DDL_WebService.fillFilter(SucceededCallbackWithContext, FailedCallback,new ddlContext("My_Filter", reset));
filterSystemSetup();
}此函数也在.js中,并在webservice方法之后执行。
function SucceededCallbackWithContext(result, userContext) {
var ddl = $get(userContext.cntrl);
var curVal = userContext.getVal();
// Fetching result...
}此函数是称为"DDL_WebService.vb“的web服务文件中的一种方法。它在.vb中,正在从数据库中获取数据。
<WebMethod()> _
Public Function fillFilter() As List(Of String)
Dim strSQL As String
strSQL = "select '(All)' from My_Table "
Return getData(strSQL)
End Function问题:我认为在fillFilter()的最后一行之后,它应该在几乎没有时间内转到SucceededCallbackWithContext()( step-into命令告诉我在中间没有发生任何事情)。但是,从SucceededCallbackWithContext()的最后一行进入fillFilter()需要大约7秒的时间。
我不知道是什么在占用时间,我如何确认和解决这个问题。
任何帮助都是非常感谢的:)
更新:使用Developer工具从另一个角度看问题,我得到了剪贴画中显示的结果。现在,我的问题变成了一些方法运行时间太长的可能原因(注意:对于请求时间最长的webservice方法,我将查询速度从10秒提高到小于3秒,但请求时间仍然是15秒左右)。一个webservice方法的执行是否会影响另一个webservice方法的速度?再次感谢!

发布于 2017-12-12 23:50:42
虽然我已经很久没有发布这个问题了,但我还是想更新我在这个问题上的进展,只是为了感谢Beldi和mostafa的建议,并在遇到类似问题时给人们一些提示。
总的来说,这个问题还没有解决,但我们想出了一个解决办法。
我们猜测有些查询可能需要很长时间才能完成,所以我根据开发人员工具列出了所有需要很长时间的查询。我一个接一个地测试了它们,发现它们都非常快。在接下来的相当长的一段时间里,我被困在验证开发工具所指示的东西上。
当我剖析以下代码时,就出现了一个突破:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "dataservice/getSimData_WebService.asmx/getSimsList",
data: JSON.stringify(params),
dataType: "json",
success: function (data, textStatus) {
if (textStatus == "success") {
var thegrid = $("#jqGrid_sims")[0];
thegrid.addJSONData(data.d);
}
},
error: function (data, textStatus) {
alert("Error from get grid data");
}
}); 在这段ajax调用中,代码在执行时发出请求。从执行开始到if语句开始之间的时间是请求时间,也就是开发人员工具indicates.The代码在if语句中花费的时间是获取时间。
在查看了每个ajax调用的请求时间和获取时间之后,我发现模拟功能的获取时间需要相当长的时间。由于加载功能会导致页面被冻结,并且试图减少冻结时间会带来更多的不确定性和更长的时间,所以我们最终决定最初不加载它。相反,一旦用户单击按钮,它将加载。
希望这对任何有类似问题的人都有帮助。
发布于 2017-10-25 05:39:15
如果要过滤数据,为什么要加载所有列的所有记录?如果您的my_table记录大约为1000个或小于1000个(我的意思是您有一个小的数据集),您就无法理解性能问题,但是过了一段时间,随着数据的增长(例如,它达到了100000),您会注意到您的服务越来越慢。
如果查询不是代码中的主要查询,那么首先使用浏览器、开发人员工具或任何其他工具来度量服务的响应时间,以确保服务器端代码或javascript代码中存在问题。
发布于 2017-10-25 09:43:57
在发送之前尝试压缩您的datataTable!我与您共享两个功能,即压缩和解压缩:
Public Shared Function CompressData(ByVal ds As DataSet) As Byte()
Try
Dim data As Byte()
Dim memStream As New MemoryStream()
Dim zipStream As GZipStream = New GZipStream(memStream, CompressionMode.Compress)
ds.WriteXml(zipStream, XmlWriteMode.WriteSchema)
zipStream.Close()
data = memStream.ToArray()
memStream.Close()
Return data
Catch ex As Exception
Return Nothing
End Try
End Function
Public Shared Function DecompressData(ByVal data As Byte()) As DataSet
Try
Dim memStream As New MemoryStream(data)
Dim unzipStream As New GZipStream(memStream, CompressionMode.Decompress)
Dim objDataSet As New DataSet()
objDataSet.ReadXml(unzipStream, XmlReadMode.ReadSchema)
unzipStream.Close()
memStream.Close()
Return objDataSet
Catch ex As Exception
Return Nothing
End Try
End Function希望能帮助你。
https://stackoverflow.com/questions/46921928
复制相似问题