提高页面加载时的性能
本文关键字:性能 加载 高页面 | 更新日期: 2023-09-27 17:56:50
我有一个.aspx屏幕,在asp:GridView组件中显示一些数据。页面加载时最多可以返回大约 30k 条记录。从 database.IS 中检索 13000 条记录需要 30 秒的时间这么慢还是这么快?我使用存储过程从数据库中检索记录 n 我只查询数据库一次并存储它。然后有一个 foreach 循环需要 2 分钟以上才能执行?因此,加载页面需要 AAPR 4 分钟。
我只是一个初学者 asp.net.你能帮我改善页面加载时的延迟吗?
这是循环结构..我们可以以任何方式优化它吗?
列表 auditList = 检索数据从数据库();//此方法从数据库返回记录
foreach (Entity obj in auditList)
{
obj.CultSpecificRevisedData = "NULL";
obj.CultSpecificPublishedData = "NULL";
if (obj.RevisedData != null && obj.RevisedData != "NULL")
obj.CultSpecificRevisedData = ConvertToProfileSpecificFormat(Convert.ToDecimal(obj.RevisedData), DecimalSeparator);
if (obj.PublishedData != null && obj.PublishedData != "NULL")
obj.CultSpecificPublishedData = ConvertToProfileSpecificFormat(Convert.ToDecimal(obj.PublishedData), DecimalSeparator);
var yearPart = obj.CalendarYear;
var monthPart = string.Empty;
var frequencyName = GetEnglishFrequencyBame(frequencyTypeMasId);
if (frequencyName == FrequencyType.Monthly)
{
monthPart = new DateTime(obj.CalendarYear, GetMonthNumber(obj.Month), 1).ToString("MMM");
obj.CultSpecificPeriod = monthPart + "-" + yearPart.ToString();
}
if (frequencyName == FrequencyType.Quarterly)
{
UserMessage = obj.QuarterName;
obj.CultSpecificPeriod = UserMessage + "-" + yearPart.ToString();
}
else if (frequencyName == FrequencyType.BiAnnually)
{
UserMessage = obj.SemesterName;
obj.CultSpecificPeriod = UserMessage + "-" + yearPart.ToString();
}
else
{
obj.CultSpecificPeriod = yearPart.ToString();
}
}
页是你的首选。
但你应该解释以下内容:你真的需要30K记录吗?用户通常不会浏览前 10''20 条记录,尝试仅返回前 100''1000 条记录,并提供良好的搜索和筛选功能,从而科学地限制结果集。
我遇到了同样的问题,我知道用户不需要那么多结果,他们需要一种很好的方法来从这些结果中找到他们想要的东西。
当然,这可以与分页合并在一起。
如果分页剂量不适合您的解决方案(出于某种原因) 您不同意所说的内容,请发布一些代码,我们将尽力帮助优化性能。 请记住,有时这是一项非常艰巨的任务。
我会回应关于不需要 30K 记录的评论。研究表明,人类无法真正直观地处理超过 2000 个列表项的任何内容,如果您显示的更多列表项,您实际上是在欺骗用户,鼓励他们获得错误或不完整的数据感。
但是如果你坚持这样做,你要做的是遍历手动设置的记录,使用 Response.Write() 手动编写每一行的 html 并将其发送到浏览器,然后使用计数器时不时地调用 Response.Flush()。如果您的数据层也支持从数据库流式传输数据(即:通过数据读取器),而不是将整个结果集加载到 RAM 中,则加分。