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 - 如何减少服务器负载/请求?的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift & Parse - getDataInBackground 不工作?