Parse & Swift - 如何减少服务器负载/请求?

Posted

技术标签:

【中文标题】Parse & Swift - 如何减少服务器负载/请求?【英文标题】:Parse & Swift - How to Reduce Server Load/Requests? 【发布时间】:2017-03-09 02:31:27 【问题描述】:

我一直在开发一个具有主页的应用程序,类似于 Instagram 的主页,当用户滚动时,帖子下方会显示 cmets 的数量。一旦用户点击带有 cmets 数量的标签,实际的 cmets 将加载到屏幕上。我一直在尝试用我的应用程序实现与此类似的东西,但我觉得我正在使用的方法是向服务器发送许多请求(查询),以便获得要在下面显示的 cmets 的数量每个帖子。我想知道是否有更有效/更简洁的方法可以减少服务器负载,但仍然具有相同的效果。

添加更多上下文(注意:我正在使用 Parse):

我有一个名为 Posts 的类,其中包含帖子 我有一个名为 Comments 的类,其中包含所有提交的 cmets。为了获取特定帖子的 cmets,我查询了 cmets(它有一个名为“parentObjectID”的列),其列(“parentObjectID”)与父帖子的对象 ID 匹配。

示例代码如下:

    let query = PFQuery(className: "Comments")
    query.whereKey("parentObjectID", equalTo: objectIDs[indexPathNums])

    query.order(byDescending: "createdAt")

    query.findObjectsInBackground  (objects, error) in
        if error != nil 
            print("An error occured (USQVC Comments Query)")
        else 

            if let tempArray = objects 
                for comment in tempArray 

                    if let x = comment 

                        myArray.append(x)
                    



                
                commentsCount = myArray.count
                myArray.removeAll()
            

        
    

即使他们更新了用户界面,我也只是想附上一张图片,以防我所描述的内容不清楚:

如果有人能帮我解决这个问题,我将不胜感激。谢谢!

【问题讨论】:

您可以将一些数量的 cmets 映射到帖子中,比如说 20。如果用户向下滚动到 20,您可以拨打电话以获取其余的 cmets。 Parse Server API 中应该有映射。 感谢您的回复!!读后,这确实让我思考。另一种解决方案可能是在每个帖子中添加一个名为 numOfComments 的列。每次用户添加评论时,都会获取、递增和保存数字。这将允许在没有太多服务器请求的情况下在主页上显示 cmets 的总数。我可以预见的唯一问题是,如果有 2 个以上的用户同时保存帖子,或者如果连接速度较慢的用户导致该数字从最近更新的数字减少,而他们的连接正在加载。 【参考方案1】:

正如您在上面的评论中指出的那样,您当然可以使用函数incrementKey 来增加numberOfComments

最好的部分是,这个方法是原子的,这意味着无论有多少人同时喜欢同一个帖子,比如说有 5 个人同时喜欢一张照片,numberOfComments 将增加 5 而不是 1 .

所以这个函数会一个一个地执行,而不是同时执行。你绝对可以使用它。

【讨论】:

感谢您的回复!我最终使用了该方法,并且效果很好。很高兴听到多个用户同时增加 numberOfComments 不会有任何问题。

以上是关于Parse & Swift - 如何减少服务器负载/请求?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Parse & Swift 存储帖子的评论?

Swift & Parse - 空 PFFile

iOS Swift & Parse - getDataInBackground 不工作?

Swift & Parse:UISearchbar 不起作用

遍历 Swift 应用程序中的自定义 Parse 列

Swift,parse.com:如何从查询中传递数据