秒杀倒计时误差问题

作者: Hoogle | 来源:发表于2015-01-26 01:08 被阅读1119次
炸弹倒计时

有过秒杀经历的朋友也许都深有体会,有时就慢那么1s,甚至零点几秒,就导致秒杀失败,前功尽弃,大家称之为“手慢无”,然而全归结于手慢吗?也许你的手很快,但依然抢不到。

这几天正好遇到这个问题,PC上秒杀倒计时慢1秒左右。

当时分析了下我们倒计时的实现方式,客户端倒计时的时间段是由服务端返回的,而服务端是计算的 开抢时间戳与服务器当前时间戳 的时间差。但是当在服务端计算好这个时间差后,还要执行一段服务端代码处理其它任务,再返回请求,并经过数据传输返回客户端、DOM装载、Javascript执行这一系列过程,等到执行倒计时那一段代码的时候,实际当前时间跟开标时间的时间差已经变小了,这就是导致误差的原因。

由此可判断,倒计时的误差跟网络环境有关,网络越慢,误差越大;跟浏览器性能有关,对于Trident内核的IE9及以下低级浏览器,误差会大一些;还跟服务端程序有关,计算好那个时间段后,是立即返回请求,还是要继续处理50ms任务再返回请求,误差会不一样,最好是计算好时间差后就立即返回请求。

对于网络环境,是不好控制的,即使使用cdn,还是会有差异。

然而,对于不同的浏览器,误差到底有多大呢?今天在同一网络环境下对各个浏览器做了个测试,每个浏览器之间的比较取3次数据。发现Firefox最快,Safari跟Chrome基本一样,比Firefox稍微慢一点点,大概0.1s左右,IE789最慢,比Firefox慢1到2秒。需要测试截屏数据的朋友可把邮箱发给我,或加我微信Hoogle8818.

建议参与秒杀的朋友们不要再用IE9及以下浏览器了,最好用最新版的Firefox,或者Safari和Chrome也行。同时建议秒杀类网站也给用户一个友好的提醒,建议他们使用Firefox、Chrome、Safari浏览器,IE9及以下浏览器就不要用了,不然不仅体验差,手快也可能无,害死人。

实现方式上也可以做一些改变,上面讲到的是计算好时间差,随着当前页document请求传输到客户端,当前页document一般会比较大,还要经过DOM装载、Javascript执行。如果document那个请求中只返回开抢时间,服务端再专门提供一个服务currentTime,返回服务器当前时间戳,客户端所有的倒计时,在执行js代码的时候,专门请求一下服务currentTime,再自己计算时间差,这样就避免了document文件传输耗时多、DOM装载、基础Javascript下载及执行带来的问题。

但是请求currentTime要时间,依然会有误差,但这个误差相对来说会小很多,基本可以认为是一个ajax请求的误差,一般是几十毫秒,如果再保守的加个5-10ms,误差应该就会非常非常小了。

文中有误请您提出,以免误人自误,同时欢迎提出其他建议,可发到个人微信Hoogle8818。

前端风暴(专注思考互联网、前端、产品、用户、生活)

相关文章

  • 秒杀倒计时误差问题

    有过秒杀经历的朋友也许都深有体会,有时就慢那么1s,甚至零点几秒,就导致秒杀失败,前功尽弃,大家称之为“手慢无”,...

  • setTimeout倒计时误差问题

    JS 是单线程的,所以 setTimeout 的误差其实是⽆法被完全解决的,原因有很多,可能是回调中的,有可能是浏...

  • 小程序实现简单的倒计时秒杀效果

    1:小程序实现电商秒杀倒计时效果+样式 wxml: wxss: js 效果如下 2:时分秒倒计时+样式拼团秒杀功能...

  • 误差问题

    先谈谈误差,什么是误差?误差(errors)是一个实验科学术语,指测量结果偏离真值的程度。对任何一个物理量进行的测...

  • 倒计时

    ios怎么在cell上添加倒计时 iOS中 简单易懂的秒杀倒计时/倒计时 iOS开发-三种倒计时的写法 iOS实现...

  • jdM站首页

    导航变色方法封装 banner轮播图方法封装 倒计时秒杀方法

  • (转)JS实现活动精确倒计时

    背景 前端页面倒计时功能在很多场景中会用到,如运营活动开始倒计时和活动结束倒计时,又如购物网站的秒杀倒计时,抢购倒...

  • GCD倒计时

    APP商城需要倒计时功能,不建议使用定时器,因为定时器会有误差问题,推荐使用GCD 首先声明一个timer { d...

  • 秒杀倒计时

    参考链接:https://github.com/abcghy/CountDownView 商城中的秒杀倒计时样式,...

  • 一个简单的倒计时小例子

    倒计时在秒杀或抢购活动中尤为常用,那今天我就带大家写一种最简单的倒计时。

网友评论

  • Hoogle:@Jarry_小费 嗯 千万别用IE及其他IE内核的第三方浏览器 用Firefox、Chrome、Safari一般会更占优势一点。
  • 6a624aa211f4:我曾经开启五个浏览器抢小米,最后是ipad用的Safari 抢到的

本文标题:秒杀倒计时误差问题

本文链接:https://www.haomeiwen.com/subject/mrekxttx.html