将数据推送到页面而不定期检查它?

max*_*hud 6 javascript php mysql ajax jquery

有没有什么方法可以将数据推送到页面而不是定期检查它?

显然你可以使用ajax定期检查它,但是有什么办法可以在执行php脚本时强制页面重新加载吗?

从理论上讲,你可以通过在ajax函数应该执行时使用表来改进ajax请求的速度(当ajax函数应该从数据库中检索新数据时更新表中的值)但是这仍然需要相当大的内存量和mysql连接以及查询执行时仍有一些等待时间,即使没有更新/您不想执行检索数据库数据的ajax函数.

有没有办法让它比查询数据库和检查存储'if updated'数据的表更高效或告诉ajax函数从另一个页面执行?

我想node.js或HTML5 webSocket也是一个可行的解决方案吗?

或者您可以在文本文件中存储"if updated"数据?欢迎任何建议.

Joh*_*ler 2

您基本上是在谈论向客户端(即浏览器)通知服务器端事件。这实际上可以归结为两件事:

  1. 您使用什么网络服务器?(您是否仅限于某种特定语言?)
  2. 您需要支持哪些浏览器?

最好的选择是使用WebSocket来完成这项工作,除了使用 Web 套接字之外的任何方法都是一种黑客行为。尽管如此,许多“黑客”工作得很好,我建议您尝试CometAJAX 长轮询

有一个名为Atmosphere的项目(以及更多项目),它为您提供适合您正在使用的 Web 服务器的解决方案,然后根据用户的浏览器自动选择最佳选项。

如果您不受浏览器的限制并且可以选择您的网络堆栈,那么我建议使用SocketIO + nodejs。这只是我现在的偏好,WebSockets 仍处于起步阶段,一旦它开始发展更多,事情就会变得有趣。有时我的整个应用程序不适合nodejs,所以我将数据操作单独卸载给它。

祝你好运。