国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Javascript實現商品秒殺倒計時(時間與服務器時間同步)_javascript技巧

來源:懂視網 責編:小采 時間:2020-11-27 21:43:41
文檔

Javascript實現商品秒殺倒計時(時間與服務器時間同步)_javascript技巧

Javascript實現商品秒殺倒計時(時間與服務器時間同步)_javascript技巧:現在有很多網站都在做秒殺商品,而這其中有一個很重要的環節就是倒計時。 關于倒計時,有下面幾點需要注意: 1.應該使用服務器時間而不是本地時間(本地時間存在時區不同、用戶自行設置等問題)。 2.要考慮網絡傳輸的耗時。 3.獲取時間時可直接從AJAX的響
推薦度:
導讀Javascript實現商品秒殺倒計時(時間與服務器時間同步)_javascript技巧:現在有很多網站都在做秒殺商品,而這其中有一個很重要的環節就是倒計時。 關于倒計時,有下面幾點需要注意: 1.應該使用服務器時間而不是本地時間(本地時間存在時區不同、用戶自行設置等問題)。 2.要考慮網絡傳輸的耗時。 3.獲取時間時可直接從AJAX的響
現在有很多網站都在做秒殺商品,而這其中有一個很重要的環節就是倒計時。

關于倒計時,有下面幾點需要注意:

1.應該使用服務器時間而不是本地時間(本地時間存在時區不同、用戶自行設置等問題)。

2.要考慮網絡傳輸的耗時。

3.獲取時間時可直接從AJAX的響應頭中讀取(通過getResponseHeader('Date')來獲得),服務器端不需要專門寫時間生成腳本。

過程分析:

1.從服務器讀到一個時間戳之后便開始計時,不考慮網絡傳輸的耗時:


圖中的各項標注分別是(上面的時間線采用標準時間,與服務器和頁面的時間均無關):

start——頁面項服務器發起AJAX請求時的時間。

www_start——服務器響應頁面的請求并返回時間戳給頁面的時間。

pc_start——頁面接受到服務器返回的時間戳并開始計時的時間。

www_end——服務器倒計時結束的時間。

pc_end——頁面倒計時結束的時間,同時也是用戶在倒計時結束那一刻點擊按鈕的時間。

end——服務器接收到用戶點擊信息的時間。

可以看出,即使在倒計時結束的那一刻(也就是秒殺開始那一刻)用戶就立即點擊鼠標,也會比實際開始搶拍的時間(www_end,即服務器倒計時結束的時間)晚一些(可以很容易的看出,這個時間差正好等于pc_start - start,也就是AJAX從開始發送到接收到響應信息的耗時)。如果有些內行在頁面倒計時結束前用腳本發送請求,那么其他用戶可就虧大了。所以,我們要解決掉這個時間誤差的問題。

2.為了解決時間誤差的問題,我們將把頁面倒計時的時間縮短一小截(由上面的分析可以得出,這一小截正好等于pc_start - start),使得用戶在倒計時結束時發送給服務器的搶拍信息正好在服務器倒計時結束時被接收到:

圖中的各項標注與Pic.1中相同(時間線采用標準時間,與服務器和頁面的時間均無關),新增的兩項標注的含義如下:

old_pc_end——在未對網絡傳輸耗時進行處理的情況下pc_end的時間。

old_end——在未對網絡傳輸耗時進行處理的情況下end的時間。

由Pic.2可見,網絡傳輸耗時造成的時間誤差已經完全被彌補了,彌補的方法是“將倒計時結束的時間提前pc_start - start”。但是解決了網絡傳輸耗時造成的誤差問題,還有用戶電腦時間和服務器時間不相同的問題,下面我們繼續討論。

3.用戶的電腦時間和服務器時間一定是有差異的,甚至差幾個時區,怎么解決這個問題呢?方法的要點如下:

A. 當頁面接收到服務器返回的時間戳www_t時,立即開始計時。

B. 當頁面接收到服務器返回的時間戳www_t時,立即計算本地時間和服務器返回的時間戳的時間差t=new Date().getTime() - www_t*1000。

C. 仍然使用new Date().getTime()來計時,而不是使用setInterval()函數(計時器很不穩定,誤差也很大),但時間的顯示與程序的邏輯必須基于本地時間和上一步(B中)求得的時間偏差t。

結論要點:

頁面從接收到服務器響應的時間戳開始計時,計時的時長應減掉AJAX從發送到接收整個過程的耗時,計時過程則使用本地時間來實現(本地時間+時間偏差)。

有任何疑問或建議請留言,謝謝!

javascript小技巧:同步服務器時間、同步倒計時

之前在網上看到有人提問,如何在頁面上同步顯示服務器的時間,其實實現方法有幾種,可能一般人立馬就想到可以使用Ajax每隔一秒去請求服務器,然后將服務器獲取到時間顯示在頁面上,這樣雖然能夠實現,但存在一個很大的問題,那就是每隔一秒去請求服務器,這樣如果用戶多了,服務器就會崩潰(內存占用率會很大),所以在我看來,這種方法不可行,我這里給出一種解決方案,能夠實現同步服務器時間、同步倒計時,卻不占用服務器太多資源,下面我給寫實現的思路

第一步,當用戶第一次瀏覽頁面時,服務器首先獲取當前時間并顯示在頁面上(比如:顯示在ID為timebox span中)

第二步,設置一個每隔一秒就計算新的時間(新時間以服務器時間為初始值,然后每隔一秒累加一秒并生成新的時間)

第三步,顯示第二步計算的時間

是不是很簡單,總結成一句話就是:以服務器時間為初始值,然后在頁面上自動每隔一秒就累加一秒生成新時間,這樣就能保證與服務器時間同步了,誤差基本在幾秒內,應該沒關系了,好了看一下實現的代碼吧:

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Javascript實現商品秒殺倒計時(時間與服務器時間同步)_javascript技巧

Javascript實現商品秒殺倒計時(時間與服務器時間同步)_javascript技巧:現在有很多網站都在做秒殺商品,而這其中有一個很重要的環節就是倒計時。 關于倒計時,有下面幾點需要注意: 1.應該使用服務器時間而不是本地時間(本地時間存在時區不同、用戶自行設置等問題)。 2.要考慮網絡傳輸的耗時。 3.獲取時間時可直接從AJAX的響
推薦度:
標簽: js 倒計時 時間和
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 蜜桃视频一区二区三区四区 | 大色欧美| 永久在线毛片免费观看 | 久久99精品国产麻豆不卡 | 国产成人精品一区二区 | 国产精品免费观看视频播放 | 在线观看国产 | 国产未成女年一区二区 | 久久精品成人 | 一级毛片免费毛片一级毛片免费 | 91精品国产色综合久久 | 日韩欧美国产电影 | 亚洲国产成人久久一区www妖精 | 91欧美激情一区二区三区成人 | 一区二区三区四区电影 | 欧美成人禁片在线观看网址 | 波多野结衣免费在线 | 欧美亚洲日本国产 | 九九九国产在线 | 日本久久精品免视看国产成人 | 亚洲男同在线观看 | 丝袜视频一区 | 亚洲色图国产精品 | 青青操在线视频 | 日韩a无v码在线播放免费 | 国产一区二区在线免费观看 | 亚洲欧美日韩高清一区二区三区 | 国产欧美一区二区三区鸳鸯浴 | 亚洲欧美一区二区三区 | 国内一级片 | 欧美亚洲综合激情在线 | 久久久国产99久久国产久 | 亚洲欧美中文日韩在线 | 青春草视频在线 | 国产成人综合久久精品红 | 国产日韩欧美一区二区三区视频 | 99国产精品高清一区二区二区 | 一区二区三区视频在线观看 | 欧美色图网站 | 欧美成人性色生活18黑人 | 久久亚洲国产成人影院 |