我有一个MVS项目,我使用AJAX来检索数组...... 以下是我在C#上的课程...我检索了19,500条记录的列表...基本上我拉了一个IEnumerable
public partial class VW_Suppliers
{
public int SupplierID { get; private set; }
public string Name { get; private set; }
public int SolarNumber { get; private set; }
public bool TpiClassification { get; private set; }
public int ValueStreamID { get; private set; }
public string ValueStream { get; private set; }
public int StatusID { get; private set; }
public string Status { get; private set; }
public string SupplierCode { get; private set; }
public int PurchaseSystemID { get; private set; }
public string PurchaseSystem { get; private set; }
public int AddressID { get; private set; }
public int AddressTypeID { get; private set; }
public string AddressType { get; private set; }
public string Street1 { get; private set; }
public string Street2 { get; private set; }
public string PoBox { get; private set; }
public string City { get; private set; }
public string PostalCode { get; private set; }
public int StateID { get; private set; }
public string StateCode { get; private set; }
public string State { get; private set; }
public int CountryID { get; private set; }
public string CountryCode { get; private set; }
public string Country { get; private set; }
}
[HttpGet]
public ActionResult GetSuppliersData()
{
JsonObject jsonObject;
IEnumerable<ViewSupplierVM> suppliers = _supplierService.GetAllSuppliers();
JsonResult jsonResult = Json(suppliers, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
}
但是,我注意到两件事......当使用断点时我注意到在我返回后...当收到数据时,AngularJS需要大约10秒才能达到断点。第二个问题是,每当页面准备好所有数据......整个网站都很慢......例如..你在文本框上输入,一切都在打字后0.5到4秒出现...这导致我相信19,500个元素的阵列正在消耗大量内存...
要求所有供应商都出现在第一个屏幕上,因此无法满足此要求。
任何提示?可以在MVC控制器上进行哪些技巧以更快地发送到前端并防止站点变慢?
答案 0 :(得分:0)
加载和渲染19,000对我来说绝对不可行。我也只是在一个应用程序中工作,客户需要能够管理他们所有的产品(15,000+)。最初的实现是使用分页完成的,this答案对我来说非常好。但更优雅的解决方案是实现某种类型的infinite-scroll
机制,我已使用ngInfiniteScroll
(https://sroze.github.io/ngInfiniteScroll/)。现在这解决了问题的一部分,那就是由于大量的HTML渲染,你的页面很慢,但是在任何情况下都不能一次从服务器中检索19,000个项目是一个好主意。它不仅极大地强调了数据库,而且如果托管在实时服务器上,则在发出数据请求时会看到相当大的延迟。我建议一次提取数据20,30,100。对于来自myPagingFunction
的{{1}}应该是正确的实施地点。