【发布时间】:2011-04-30 23:29:12
【问题描述】:
背景
因此,如果您访问https://foursquare.com/,并查看标题“最近活动”下,您将看到来自世界各地 Foursquare 各个成员的不断更新的更新列表。
新的更新滑到堆栈的顶部,最旧的更新滑落(可能使用 JQuery 或其他东西,但这不是我的问题)。
Stack Overflow 的另一位成员告诉我,这实际上或多或少是一个伪新闻提要。当您加载页面时,它会调用数据库并获取 30 条最新记录,然后最初在页面上显示 30 条中最旧的 11 条,然后设置超时以滑出最旧的/最新的幻灯片.但是,它只是不断地循环遍历这 30 条记录(如果您将自己留在页面上而没有刷新或任何其他操作,您会注意到这一点)。它不会进行任何其他 AJAX 调用以从服务器获取新消息。这仅在页面加载时发生。
问题
- 他们这样做有什么原因吗?
- 我想设置我的,这样我就可以在页面加载时抓取一组记录,并显示它们(类似于 Foursquare),但是,我想(在我循环浏览这些记录之后)我带入 DOM),然后进行另一个 AJAX 调用以查看是否有任何更新,并将这些新的无缝集成到同一流程中。基本上,将其视为 Twitter 和 Foursquare 之间的混搭。 Twitter 让您知道何时有新消息,并让您可以选择将它们弹出到您的提要之上,而 Foursquare 只是在页面刷新时将新消息带入,仅此而已。有什么方法可以开始思考这个问题(在效率、架构等方面)?
如果有任何理由我不应该这样做,我也愿意听。
目前已完成
到目前为止,我有 SQL Server 存储过程,可以让我获取一组记录(从网站上给定的一组情况 - 离题)。我可以随时(显然)调用这些。作为从数据库返回的这些记录的一部分,是它们的唯一 ID。当我在 DOM 中显示它们时,我使用 <span> 标记来保存每条消息的 ID,因此我能够向服务器进行 AJAX 回调,并将显示的最后一个 ID 传递给用户,然后我还有一个只会返回 ID 更大的 proc(稍后输入)。
如您所见,就技术上可行的情况而言,我知道它是可行的。我可以在 DOM 中的页面加载时显示一大堆消息,然后当它到达最后一个时,对服务器进行另一个 AJAX 调用以在顶部弹出更多消息,并不断更新它们。我主要是问上面的两个问题,这是一个好主意(一次在 DOM 中拥有这么多消息)吗?如果有任何更好的,我可以做到这一点的更有效的方法。
谢谢大家。
【问题讨论】:
标签: jquery sql-server asp.net-mvc-2 dom architecture