この記事では主に js カウントダウン関数のコードを説明します。まず、サーバー時間とローカル コンピューター時間の間には一定の時間差があるため、サーバー時間が同期される理由について説明します。宝くじの結果など、適時性の要件が非常に高い一部のアプリケーションでは、この種の時間差を許容できません。
オプション 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 カウントダウン スナップアップの例_JavaScript スキル
以上がjsの高効率サーバー時刻同期例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。