Maison >interface Web >js tutoriel >js compte à rebours efficace de synchronisation de l'heure du serveur

js compte à rebours efficace de synchronisation de l'heure du serveur

巴扎黑
巴扎黑original
2017-09-15 09:27:381654parcourir

Tout d'abord, parlons de la raison pour laquelle nous devons synchroniser l'heure du serveur, car il existe un certain décalage horaire entre l'heure du serveur et l'heure de l'ordinateur local. Certaines applications qui ont des exigences d'actualité très élevées, comme les résultats de loterie, ne peuvent pas tolérer ce genre de décalage horaire

Option 1 : Demander l'heure au serveur pour chaque compte à rebours


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

Cette solution n'est pas conseillée aux développeurs ayant un peu d'expérience. Parce que cela exercera une pression inimaginable sur le serveur et provoquera le crash de l’application. Si vous restez sur cette page pendant une minute, la demande sera envoyée 60 fois. Si 100 personnes visitent cette page à ce moment-là, il y aura 6 000 demandes en une minute. Si le nombre de personnes augmente à nouveau, ce sera certainement le cas. provoquer une pression inutile sur le serveur. De plus, le compte à rebours de cette solution comportera également une erreur importante, car il y a un retard dans la demande, qui est également étroitement lié à l'état de votre réseau.

Option 2 : Renvoyer un horodatage de compte à rebours basé sur l'heure du serveur depuis le serveur


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

Avantages :

sur la page Demande une fois dans le cycle de vie
Haute précision, même si la page est ouverte pendant une longue période, elle conservera toujours une grande précision
Inconvénients :

Puisque l'heure actuelle est obtenue toutes les secondes, si le l'heure locale est délibérément modifiée pendant la période du compte à rebours. Cela entraînera une exception de compte à rebours.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn