我有一个10分钟长的视频,人们可以停止视频并留下评论。时间(以秒为单位)和注释都保存在数据库中。可以在同一秒内留下多个注释。
当有可供查看的注释时,将显示一个图标。我使用的是10秒的窗口,所以在8秒留下的评论将在3- 13秒内可用。
我目前每2秒轮询一次数据库,使用
SELECT COUNT(*) AS count FROM comments WHERE time BETWEEN $time-5 AND $time+5
当有人单击图标查看评论时,我会从数据库中检索相关的评论。
在开始时获取所有注释,构建某种类型的javascript对象或数组,并使用自定义的介于两个对象之间的方法遍历对象,这会不会更好呢?
我知道这取决于我正在处理多少评论,但如果MySQL计数查询无关紧要,我不想经历构建javascript解决方案和运行性能测试的麻烦。
发布于 2011-10-11 21:23:20
我会从评论中只选择id+timestamp,然后在用户操作(点击,悬停)上加载评论本身,或者只是在电影进行时加载评论。这比每隔两秒查询一次数据库要好,因为与内存中的计算相比,HTTP请求通常相当慢。我认为这也比一次加载所有评论要好,因为加载评论数据可能会减慢最初的请求,而且可能大多数时候你根本不需要这些评论。缺点是用户永远看不到在初始加载后添加的评论,但我认为这是一个相当小的问题。
发布于 2011-10-11 20:43:24
该MySql查询将非常快,但请记住,一般来说,服务器请求要比在客户端执行所有操作慢得多。我首先(按照您的建议)将所有注释存储在一个JavaScript数组中,然后轮询该数组。这使得所有的处理都在客户端进行。如果您的服务器当天由于任何原因而变得很慢,它将特别有用。
:对于尼克的有效评论,我想答案取决于有多少评论。如果有负载(数千?)如果你希望每隔几分钟就会有新的评论发布,最好是不断地轮询服务器。
发布于 2011-10-11 20:44:39
我认为这更多的是基于网站获得的点击量--页面点击量越多,你运行的这些计数就越多。
当然,如果它们被正确地索引,你只会命中索引,但是构建一些东西来查询数据库一次,并为视频中的每秒准备一个包含(例如)一个数组元素的javascript数组,然后用相关评论的数量填充每个数组的值,如果你在网站上获得大量的点击量,效率会更高……
只值我的两便士。
https://stackoverflow.com/questions/7726153
复制相似问题