每隔预定义秒刷新一次PHP页面

时间:2009-05-02 15:13:28

标签: php javascript mysql ajax web-applications

我想每10秒加载/刷新一个特定页面,以查看从数据库中提取的更新数据。

我用META做了

 <META HTTP-EQUIV=Refresh CONTENT='10; URL=livedata.php'>
  

但我仍然同意我们也这样做   使用:

     
      
  • 通过settimeout加载div的Javascript
  •   
  • Ajax动态刷新
  •   

如果您使用META,AJAX动态刷新,Javascript settimeout分享性能问题,那将会很棒。还可以分享最好的方法。

注意:需要刷新整个页面而不是特定的帧或div。

6 个答案:

答案 0 :(得分:4)

使用AJAX对用户来说是最不干净的,因为用户在完成之前不会注意到正在刷新/重新加载的东西。

请注意,根据具体情况,AJAX可以比META表现更好或更差:

  • 如果要更新的数据相对于完整的HTML页面大小较小,则AJAX优于META,因为使用AJAX,您只能发送数据差异,和/或您可以以比HTML更紧凑的格式发送数据
  • 运行JavaScript会给用户的浏览器带来负担。如果用户打开了20个选项卡(这并不罕见),并且每个选项卡都在后台运行一些setTimeout,它可以在浏览器respoinsiveness中产生巨大差异,将所有选项转换为无JavaScript刷新。

答案 1 :(得分:2)

如果您打算刷新整个页面,使用<META>标签是最简洁的方法。当你有一个完全支持HTML的方法时,让JS计时器刷新你的页面似乎很尴尬。

但是,如果您只需要刷新页面的特定部分,请使用AJAX。它在用户体验和性能方面都更好。

答案 2 :(得分:2)

使用javascript获取动态内容还有一个好处:如果内容没有加载一次,它仍然可以继续尝试。如果你重新加载整个页面并且它没有加载,那么它就会停在那里。

如果您使用Ajax,那么显示效果会更好,因为您没有看到整个页面消隐并一次又一次地重新渲染。

答案 3 :(得分:1)

对于客户来说,你提到的所有方法之间并没有什么区别。我能找到的唯一区别是使用不像其他解决方案那样需要javascript,但现在每个人都有javascript。

对我而言,最重要的区别在于服务器使用情况。如果你有100个用户每10秒刷新一次,那已经是大约10 reqs / sec。根据您必须生成页面的逻辑(可能是dinamic),这可能会导致服务器使用率急剧上升。确保你对此保持谨慎。

答案 4 :(得分:1)

请注意,您还可以使用PHP中的header()来完成元标记的操作。只需确保在其他输出之前调用header()。

答案 5 :(得分:0)

使用jQuery,你可以做到这一点):

var seconds = 10;
var id = setInterval(function()
{
     $('#container').load('whatever.php');
}, 1000*seconds);

:)