我正在调用单个查询以使用 Ajax 在我的 Web 应用程序的主页上获取多个类别数据。但它的性能很糟糕。如何改进它?
var result = _db.news.Where(a => a.Sector == sector)
.OrderByDescending(a => a.ModifiedOn)
.Select(a => new LatestNewsView {
Id = a.Id,
Title = a.Title,
CreatedOn = a.ModifiedOn,
ImageUrl = a.ImageUrl,
Sector = a.SubTitle,
Country = a.Country,
NewId = a.NewsId
})
.AsNoTracking().Skip(skip).Take(take);
Ajax 调用
$.ajax({ url: "/Home/NewsBySectorTitle?sector=10, dataType: "html" }).done(function (data) {$("#col1").append(data);});
缓慢可能来自以下来源:
您将需要直接在数据库中运行 LINQ 生成的查询。如果它很慢,那么你有一个数据库级的性能问题。在这种情况下,您需要查看数据库的架构、涉及的表的大小以及查询本身。很明显,您有一个过滤器Sector
。你有这个领域的索引吗?如果没有,创建一个也无妨。由于将计算索引,这将提高读取操作的速度,但会降低写入操作的速度。但是,读取通常比写入频繁得多。看看正在加载的列。是否有包含大数据长文本的列?
您的 IIS 是否设置为按顺序处理请求?其他站点是否在同一台服务器上运行?
您需要在那里放置一个断点以确保这确实是需要很长时间的操作。如果是这种情况,则很可能是数据库问题,但不一定。例如,如果您执行此操作很多时间,s。如果这不像你想象的那么慢,那么慢可能来自应用程序的另一个地方。也许是另一个查询,或者,如果您多次执行此查询,您可能需要修改查询以加载批量数据。
您可能需要检查网络服务器端。如果消息从路由器到达服务器并返回的速度通常很慢,那么这也可能是您的特定情况的原因。
它可能take
非常大,或者每行都有很长的文本,下载数据需要很长时间。在这种情况下,您可能希望最初发送前 10 个结果并在用户查看前 10 个时加载其余的结果。
如果您或您的服务器的 Internet 连接速度很慢,这也可能是导致问题的与编程无关的原因。
您正在通过 jquery 附加数据。如果将其替换console.log('foo');
为性能是否会提高很多?在这种情况下,您的结构可能会因大量事件而变得非常复杂,从而导致您的浏览器永远加载内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句