我在我的页面上显示一个帖子列表,其中包含用户可以打开或关闭的喜欢按钮。为了限制我的服务器的流量,我想:
- 在同一请求中同时发送所有类似状态发生变化的帖子的更新
- 仅发送已修改帖子的更新
- 每 N 秒更新一次类似状态,并且仅在页面退出时更新。不是每次用户切换一个喜欢的按钮。
这可能与 angularjs 吗?
我在我的页面上显示一个帖子列表,其中包含用户可以打开或关闭的喜欢按钮。为了限制我的服务器的流量,我想:
这可能与 angularjs 吗?
我写了一个可以在这里看到的例子:
http://plnkr.co/edit/imMGTJ75mKJZT7ispD9E?p=preview
我花了一些时间来评论它,并提供在页面运行时显示在页面本身上的有用信息。如果消息移动得太快,如果您希望它运行得更慢,请更改延迟。
从您的问题来看,当用户对特定帖子进行任何更改时,您似乎想要保存。您建议每 x 秒检查一次更改,但这并不理想(尽管使用 a 实现起来很简单setInterval
)。您还提到在页面退出时保存更改,但无法保证页面退出时会发生某些事情(例如用户断电)。
为避免上述情况,我会在用户单击“喜欢”按钮时触发 ajax 调用,但在第一次单击后对其进行节流并在节流计时器运行时存储更改,并在计时器结束后立即推送所有更改。
简而言之,这是我的 plunker 代码的作用:
用户“喜欢”或“不喜欢”帖子,它将使用帖子上的新信息向服务器发出 Ajax 调用。此时,任何新的“喜欢”/“不喜欢”都会被放入需要更新的帖子“队列”中。
当第一个 Ajax 调用成功时,节流计时器启动。在我提供的示例中,它是 5 秒。对帖子的任何更改(“喜欢”、“不喜欢”)都将被扔到同一个“队列”中。
5 秒后,它会检查“队列”。如果为空,则不执行任何操作。如果其中有项目(例如已更改的帖子),那么它将进行第二次 ajax 调用并更新服务器上的帖子。
我的示例不会准确反映您正在处理的内容,但重要的是概念。您可以修改代码,使其不会在这么长时间内节流,或者仅在一定时间内 x 次 ajax 调用后节流,等等。