我已经尝试了几个月的搜索解决方案,甚至没有接近答案 - 我甚至不知道在搜索时使用什么关键字,我希望有人在这里回答或至少可以指出我应该寻找的方向。
在我的公司内部,我设置了一个Intranet页面,人们可以在其中添加问题(很像帮助台票务系统)。用户可以在需要时将更新添加到这些问题中。因此,我有两个数据库表(其中包括) - 一个有问题,另一个有这些问题的更新。
我已经建立了一个网站,该网站使用jquery的ajax请求来轮询数据库,查看用户办公桌上当前已发布的所有问题以及该问题的最新更新(如果有)。根据用户的偏好,这些列在更新或发布的已打开订单中。
每7秒更新整个div,刷新整个列表。因此,如果我每次刷新时都会在浏览器的页面中间突出显示问题中的某些文本,那么我就会忽略该突出显示。这个刷新在我的服务器上也有很大的负载 - 如果每个人的浏览器每隔7秒就会刷新整个数据库的内容,那么数据库需要花费很多。
我想要做的是让浏览器只更新自上次刷新以来不同的项目。我已将其设置为在上次刷新视图时更新用户数据库,因此每7秒(如果他们正在查看首页)此字段获取新的unix时间戳。我还有问题和更新的创建时间以及问题的更新时间戳(当为该问题创建新的更新时,更新时间戳会使用新的unix时间进行更新。)
据我所知,这可以告诉facebook的新闻提要。每隔一段时间就会有新的帖子被添加到顶部,对旧帖子的回复会在其下添加,新的喜欢和分享会更新等等。如果我在我的脸书页面上突出显示一些文字突出显示不会丢失,这意味着Facebook仅更新Feed的各个部分,而不是整个Feed本身。这就是我想要发生的事情。
你知道有关如何做这样的事情的任何教程吗?或者如何搜索,因为当我搜索facebook类型的新闻源系统时,我得到的是如何与facebook的API接口!提前谢谢。
答案 0 :(得分:1)
你可能会尝试研究推送技术:
Push Technology - Long Polling
推送技术,特别是长轮询在这种情况下非常有用。这是手机应用程序在向用户或订阅者传输新数据或更新时使用的概念。在这种情况下,与服务器的连接保持活动状态。用户的机器偶尔会在服务器上轮询新信息。但是,如果有新信息要提供给用户,则服务器仅回答响应。在这种情况下,您可以每7秒轮询服务器,但服务器不会响应或重新绘制div,直到有新信息。
就更新div而言,您可以尝试使用jquery .clone和.append选项在其自己的范围内添加每个新项目。
例如:
HTML:
<span id="itemX"></span>
On Ajax Success:
var tile = $('#itemX').clone().attr('id','item1').text("Text returned from ajax call.");
$('#divName').append(tile);
通过这种方式,您可以修改ajax调用中的每个新项目,并将其附加到您的下方,而不会影响其上方的项目。
祝你好运。希望这会有所帮助。