我正在创建一个从在线API加载JSON数据的JS脚本。它非常简单,但我必须创建类似用户排名的内容,因此我会查询“用户”的数据,然后根据“用户”进行查询。结果我查询其他数据,例如'发表','评论'等等,我算这个。数据被分页,所以我也必须迭代它。 最后,查询的数量非常大~300-500并且加载所有内容需要很长时间。我无法加载,因为结果必须是最佳/最活跃用户的排名。
如何处理大量的JSON问题?也许在这种情况下长时间加载是正常的,我必须等到它加载?
我没有附上代码,因为我觉得它并不重要。
==
编辑:我的问题是如何提高执行API调用的速度。如果我有300个API调用(我无法减少它),执行时间甚至很少(5-7)分钟(每个请求1s-1.5s),所以我的应用程序挂起。 我在GitHub Api工作。
答案 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 ..
编辑:至于与主查询相关的其他查询,最好不要一次加载所有查询。仍取决于呈现数据的方式。例如,您只需为评论添加按钮(或可点击的文本),只需在用户点击它时触发查询。