繁体   English   中英

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

[英]Refresh a PHP page for every predefined seconds

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

我用META来做

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

但我仍然同意,我们也可以使用以下方法:

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

如果您使用META,AJAX动态刷新,Javascript settimeout共享性能问题,那就太好了。还请共享实现此目标的最佳方法。

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

使用AJAX对用户的干扰最小,因为在完成之前用户不会注意到正在刷新/重新加载某些内容。

请注意,根据具体情况,AJAX的性能可能比META更好或更差:

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

如果计划刷新整个页面,则使用<META>标记是最干净的方法。 当您具有完全受支持的仅HTML方式时,使用JS计时器刷新页面似乎很尴尬。

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

使用javascript提取动态内容还有另外一个好处:如果内容一次没有加载,它仍然可以继续尝试。 如果您重新加载整个页面但没有加载,那么它将在此处停止。

同样,如果您使用Ajax,则显示效果会更好,因为您不会看到整个页面都消隐掉并一次又一次地重新呈现。

对于客户端,您提到的所有方法之间实际上没有任何区别。 我可以找到的唯一区别是,使用它不需要像其他解决方案一样使用javascript,但是如今无论如何,每个人都拥有javascript。

对我来说,最大的不同在于服务器的使用情况。 如果您有100位用户每10秒刷新一次,那已经大约是10 res / sec。 根据生成页面的逻辑(可能是动态的),这可能导致服务器使用率急剧上升。 确保您对此有所注意。

请注意,您还可以在PHP中使用header()来完成meta标签的作用。 只要确保在其他输出之前先调用header()即可。

使用jQuery,您可以做到):

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

:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM