先說一下,為什麼要伺服器時間同步, 因為伺服器時間和本機電腦時間有一定的時間差。有些對時效性要求非常高的應用,例如時時彩開獎,是不能容忍這種時間差存在的
#方案1:每次倒數計時去服務端請求時間
//开启定时器 var timer = setInterval(function () { //执行请求,获取当前服务端时间并进行相应操作 }, 1000);
這個方案對於稍微有點經驗的開發人員來說,都知道是不可取的。因為這會對伺服器造成無法想像的壓力,導致應用程式崩潰。在這個頁面停留一分鐘,那麼請求就發送了60次,假如此時有100個人在訪問這個頁面,那麼一分鐘就有6000條請求,人數如果再增長,這絕對會造成不必要的伺服器壓力。而這個方案的倒數計時,也會存在很大的誤差,因為請求存在延遲,跟你的網路狀態也有很大的關係。
方案2:從服務端傳回以伺服器時間為基準的倒數計時時間戳
//开启定时器 //假设请求获取到一个时间戳时间差 dateDiff var timer = setInterval(function () { //每秒会获取本地时间,这样就算执行的周期不准确 也可以准确的获取时间差 var countDown = endTime - (+Date.now())/1000 + dateDiff; // 倒计时页面渲染 }, 1000);
優點:
在頁面生命週期中請求一次
準確度高,就算頁面打開很久還是保持高準確度
缺點:
#由於每秒獲取當前時間,假如刻意在倒數時期內,修改了本地時間將會導致倒數異常。
以上是js 高效率伺服器時間同步倒數計時的詳細內容。更多資訊請關注PHP中文網其他相關文章!