JSON数组使网站变慢。 AngularJS

时间:2016-05-20 20:59:34

标签: arrays angularjs json asp.net-mvc-4

我有一个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控制器上进行哪些技巧以更快地发送到前端并防止站点变慢?

1 个答案:

答案 0 :(得分:0)

加载和渲染19,000对我来说绝对不可行。我也只是在一个应用程序中工作,客户需要能够管理他们所有的产品(15,000+)。最初的实现是使用分页完成的,this答案对我来说非常好。但更优雅的解决方案是实现某种类型的infinite-scroll机制,我已使用ngInfiniteScrollhttps://sroze.github.io/ngInfiniteScroll/)。现在这解决了问题的一部分,那就是由于大量的HTML渲染,你的页面很慢,但是在任何情况下都不能一次从服务器中检索19,000个项目是一个好主意。它不仅极大地强调了数据库,而且如果托管在实时服务器上,则在发出数据请求时会看到相当大的延迟。我建议一次提取数据20,30,100。对于来自myPagingFunction的{​​{1}}应该是正确的实施地点。