如何使用大量的JSON查询?

时间:2018-01-02 09:39:19

标签: javascript json github-api

我正在创建一个从在线API加载JSON数据的JS脚本。它非常简单,但我必须创建类似用户排名的内容,因此我会查询“用户”的数据,然后根据“用户”进行查询。结果我查询其他数据,例如'发表','评论'等等,我算这个。数据被分页,所以我也必须迭代它。 最后,查询的数量非常大~300-500并且加载所有内容需要很长时间。我无法加载,因为结果必须是最佳/最活跃用户的排名。

如何处理大量的JSON问题?也许在这种情况下长时间加载是正常的,我必须等到它加载?

我没有附上代码,因为我觉得它并不重要。

==

编辑:我的问题是如何提高执行API调用的速度。如果我有300个API调用(我无法减少它),执行时间甚至很少(5-7)分钟(每个请求1s-1.5s),所以我的应用程序挂起。 我在GitHub Api工作。

2 个答案:

答案 0 :(得分:-1)

您可以从服务器压缩JSON数据

 Public Class JSONCompressFilter
    Inherits ActionFilterAttribute

    Public Overrides Sub OnActionExecuting(filterContext As ActionExecutingContext)
        ' MyBase.OnActionExecuting(filterContext)

        Dim request As HttpRequestBase = filterContext.HttpContext.Request
        Dim acceptEncoding As String = request.Headers("Accept-Encoding")
        If String.IsNullOrEmpty(acceptEncoding) Then
            Return
        End If
        acceptEncoding = acceptEncoding.ToUpperInvariant()
        Dim response As HttpResponseBase = filterContext.HttpContext.Response

        If acceptEncoding.Contains("GZIP") Then
            response.AppendHeader("Content-encoding", "gzip")
            response.Filter = New GZipStream(response.Filter, CompressionMode.Compress)
        ElseIf acceptEncoding.Contains("DEFLATE") Then
            response.AppendHeader("Content-encoding", "deflate")
            response.Filter = New DeflateStream(response.Filter, CompressionMode.Compress)
        End If
    End Sub

End Class

将此属性添加到Action返回JSON数据

答案 1 :(得分:-1)

您可以使用无限滚动的概念.. https://infinite-scroll.com/

它的作用是从源加载初始数据,然后在用户向下滚动时加载更多数据。它类似于facebook / twitter / insta / etc feed ..

编辑:至于与主查询相关的其他查询,最好不要一次加载所有查询。仍取决于呈现数据的方式。例如,您只需为评论添加按钮(或可点击的文本),只需在用户点击它时触发查询。