簡體   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