ホームページ >ウェブフロントエンド >jsチュートリアル >jsの効率的なサーバー時刻同期カウントダウン

jsの効率的なサーバー時刻同期カウントダウン

巴扎黑
巴扎黑オリジナル
2017-09-15 09:27:381653ブラウズ

まず最初に、サーバーの時刻を同期する必要がある理由について説明します。サーバーの時刻とローカル コンピューターの時刻には一定の時差があるためです。宝くじの結果など、非常に高い適時性が要求される一部のアプリケーションでは、この種の時間差を許容できません。 オプション 1: カウントダウンごとにサーバーにアクセスして時刻を要求します

//开启定时器
var timer = setInterval(function () {  
  //执行请求,获取当前服务端时间并进行相应操作
}, 1000);

このソリューションは、経験が少ない これはお勧めできないことは誰もが知っています。これにより、サーバーに想像を絶する負荷がかかり、アプリケーションがクラッシュする可能性があるためです。このページに 1 分間滞在すると、リクエストは 60 回送信され、この時点で 100 人がこのページにアクセスしている場合、人数が増え続けると 1 分間に 6,000 回のリクエストが送信されます。間違いなくサーバーに不必要な負荷がかかります。さらに、このソリューションのカウントダウンにも大きな誤差が生じます。これは、リクエストに遅延があり、これもネットワークの状態と密接に関係しているためです。

オプション 2: サーバーからサーバー時間に基づいてカウントダウン タイムスタンプを返します

//开启定时器
//假设请求获取到一个时间戳时间差 dateDiff
var timer = setInterval(function () {
  //每秒会获取本地时间,这样就算执行的周期不准确 也可以准确的获取时间差
  var countDown = endTime - (+Date.now())/1000 + dateDiff;
  // 倒计时页面渲染
}, 1000);

利点:

ページのライフサイクル中に 1 回リクエスト

精度が高く、ページが長時間開いている場合でも、高い精度を維持します

欠点:

現在時刻が毎秒取得されるため、カウントダウン期間中に意図的に現地時間を変更すると、カウントダウンが異常になります。

以上がjsの効率的なサーバー時刻同期カウントダウンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。