js 倒計時(高效率服務器時間同步)
更新時間:2017年09月12日 21:54:21 作者:snaildev
首先說一下,為什么要服務器時間同步, 因為服務器時間和本地電腦時間存在一定的時間差。有些對時效性要求非常高的應用,例如時時彩開獎,是不能容忍這種時間差存在的
方案1:每次倒計時去服務端請求時間
//開啟定時器 var timer = setInterval(function () { //執(zhí)行請求,獲取當前服務端時間并進行相應操作 }, 1000);
這個方案對于稍微有點經驗的開發(fā)人員來說,都知道是不可取的。因為這會給服務器造成無法想象的壓力,導致應用崩潰。在這個頁面停留一分鐘,那么請求就發(fā)送了60次,假如此時有100個人在訪問這個頁面,那么一分鐘就有6000條請求,人數(shù)如果再增長,這絕對會造成不必要的服務器壓力。并且這個方案的倒計時,也會存在很大的誤差,因為請求存在延遲,跟你的網絡狀態(tài)也有很大的關系。
方案2:從服務端返回以服務器時間為基準的倒計時時間戳
//開啟定時器 //假設請求獲取到一個時間戳時間差 dateDiff var timer = setInterval(function () { //每秒會獲取本地時間,這樣就算執(zhí)行的周期不準確 也可以準確的獲取時間差 var countDown = endTime - (+Date.now())/1000 + dateDiff; // 倒計時頁面渲染 }, 1000);
優(yōu)點:
在頁面生命周期中請求一次
準確度高,就算頁面打開很久還是保持高準確度
缺點:
由于每秒獲取當前時間,假如刻意在倒計時時期內,修改了本地時間將會導致倒計時異常。
相關文章
BootStrap中Datetimepicker和uploadify插件應用實例小結
這篇文章主要介紹了BootStrap中Datetimepicker和uploadify插件應用實例小結的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-05-05