【发布时间】:2011-12-07 07:31:25
【问题描述】:
我想做一个 django 服务器来刷新你接近数据库的内容,如果想法是首先让用户看到数据库的当前内容,并且随着山谷成为新的内容,这个内容就来了放在前面的内容之上而不重新加载页面,在网站的另一部分是让你在获取数据库时用新的内容更改当前内容?
evserver clearer 是我的选择,但真的不知道怎么做最简单高效?
【问题讨论】:
我想做一个 django 服务器来刷新你接近数据库的内容,如果想法是首先让用户看到数据库的当前内容,并且随着山谷成为新的内容,这个内容就来了放在前面的内容之上而不重新加载页面,在网站的另一部分是让你在获取数据库时用新的内容更改当前内容?
evserver clearer 是我的选择,但真的不知道怎么做最简单高效?
【问题讨论】:
我认为您应该避免使用 HTTP 轮询。原因如下:
setInterval 的频率与您的 Web 应用程序上的用户数量相结合会导致大量资源消耗。如果您浏览this presentation 中的幻灯片 9 到 19,您会看到一些使用 Push 的非常引人注目的数字(注意:此示例使用托管服务,但托管您自己的实时服务器并使用 Push 也有类似的好处 em>)
setInterval 调用之间,您的应用中显示的数据可能没有数据。使用推送技术意味着新数据可用的那一刻,它可以被推送并显示在您的应用程序中。您不希望用户在查看应用时认为他们看到的是正确信息,而实际上他们并没有看到。您应该回答以下 StackOverflow 问题:
对于 Python/彗星,请参阅:
我建议您也开始考虑“WebSockets”以及“Comet”。大多数 Comet 服务器现在更喜欢尽可能使用 WebSocket 连接。
如果您不想安装和管理自己的 Comet/WebSocket 解决方案,那么您可以使用 realtime hosted service,这将允许您使用 REST API 通过它们推送数据,并且您的客户端可以通过嵌入 JavaScript 库来接收事件并编写一小段代码来订阅和接收事件。
【讨论】:
步骤非常简单:
setInterval()编写一个包含JavaScript的模板
对视图进行 AJAX 请求并呈现接收到的数据。 (我建议使用 JQuery,因为它有据可查且广泛使用)。【讨论】: