【问题标题】:Continous update content of a Django page一个Django页面的持续更新内容
【发布时间】:2012-08-14 21:19:58
【问题描述】:

我有一个数据库来存储每秒生成的一些行。我想更新网站,每个新内容到达数据库,我不想刷新页面,而是向当前页面添加新行。最好的方法是什么?

【问题讨论】:

  • 你需要实现comet,最好的方法是使用socket.io。然后在您的代码中,您可能会实现一个生成器并在获得结果时返回结果。请参阅 Django-socketio:pypi.python.org/pypi/django-socketio 这不是一个简单的修复。简短的简单解决方案就是使用短轮询(比如说,使用 ajax 并每隔 5-6 秒询问一次新内容)。该解决方案效率非常低,但几乎不需要破解。主要在前端。 comet 中的另一种替代方法是长轮询,但它仍然需要进行大量更改。所以我会把你的时间花在socket.io上

标签: python django


【解决方案1】:

您应该使用 AJAX 查询,两种技术之一:

  1. 定期更新页面请求(并使用 JavaScript 中的结果更新表格;后端保持纯 django);或
  2. 使用长轮询(一种通常称为“彗星”的技术)保持与服务器的连接打开并在有更新时接收服务器事件。在为请求/响应模式设计的框架中,后端可能有点棘手;但是您可以在 python here 中找到有关如何执行此操作的线索。

【讨论】:

  • 如果我想每 1 秒汇集一次数据,AJAX 和通过它获取数据(可能是 JSON 格式的 jQiery getJSON 函数)不会影响网站的性能吗?
  • 这实际上取决于您的应用程序、用户数量、加载模式等。在常见的 Web 应用程序扩展中,每 1 秒更新一次会被认为有点过于激进。但是如果你目前没有太多的负载,它将为你省去在 django 上实现 comet 的麻烦。如果您足够灵活,可以将您的应用程序仅限于 HTML5 客户端,您可以使用 websockets - 它有 some support in django
猜你喜欢
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
  • 2018-04-04
  • 2011-11-10
  • 2012-05-09
相关资源
最近更新 更多