我有一个十分钟长的视频,人们可以停止视频并发表评论。时间(以秒为单位)和评论都保存在数据库中。同一秒可以留下多个评论。
当有评论可供查看时,会显示一个图标。我使用的是 10 秒窗口,因此 8 秒后留下的评论将在 3 - 13 秒内可用。
我目前每 2 秒轮询一次数据库
SELECT COUNT(*) AS count FROM comments WHERE time BETWEEN $time-5 AND $time+5
当有人点击图标查看评论时,我会从数据库中检索相关评论。
在开始时获取所有注释,构建某种 JavaScript 对象或数组,并使用自定义的 Between 方法迭代对象,这样会更好吗?
我知道这取决于我正在处理的评论数量,但如果 MySQL COUNT 查询无关紧要,我不想经历构建 javascript 解决方案和运行性能测试的麻烦。
最佳答案
MySql 查询将非常快,但请记住,一般来说,服务器请求比在客户端执行所有操作要慢得多。我首先会将所有注释存储在 JavaScript 数组中(正如您所建议的),然后轮询该数组。这将所有处理保留在客户端上。如果您的服务器由于某种原因当天运行缓慢,它将特别有用。
编辑:为了回应尼克的有效评论,我想答案取决于有多少评论。如果有负载(数千?)并且您希望每隔几分钟发布新评论,那么最好继续轮询服务器。
关于javascript - MySQL COUNT 性能与 JavaScript 对象/数组的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726153/