联系支持

我们通过电子邮件回复,通常两天内。

为防止滥用,Google reCAPTCHA 会检查这次提交,其间会向 Google 传输数据。脚本只在此表单打开时才加载。

← 全部文章

关于页面上的数字从哪里来

关于页面顶部现在有六个数字:此刻在线人数、昨日访客数、使用中的计数器数量、过去三十天内的国家数、可供选择的样式数量,以及这项服务开始的年份。这六个数字全部来自正在运行的系统本身,其中有两个会在这个页面显示的过程中实时变动。

这一点值得说明一下,因为这类页面上的数字,往往并不是真正意义上的数字。

每个数字的来源

此刻在线指的是过去五分钟内,在任何一个装有计数器的网站上被看到过的所有人。这只需要对一张小表做一次查询,耗时0.6毫秒,所以每次有人打开这个页面,都会重新查询一次。

昨日访客是昨天一整天里,所有计数器上不重复访客的数量。之所以是昨天而不是今天,是因为半天的数据没法拿来和任何东西做比较。耗时11毫秒,同样是每次请求都重新查询。

使用中的计数器和国家这两个是开销比较大的一对。在这台硬件上,统计过去三十天内记录到数据的计数器数量,耗时略低于0.9秒;不重复国家数则耗时0.2秒。如果每次页面浏览都去查询其中任何一个,就等于为了一个前后两次访问之间可能只变动1的数字,花掉一秒的数据库时间。所以它们改为每天计算一次,结果保存在代码旁边的一个小文件里。

样式数量来自构建样式库的同一份文件,所以它不可能和实际可选的样式脱节——目前共有691种。2006是数据表里仍然存在的最早计数器所属的年份。具体日期是11月18日。

使用中的计数器,而非历史上创建过的计数器

这是那种运营者可以自行选择怎么说的数字,所以这里就说明一下这个选择本身。

自2006年以来,一共发放过379,174个计数器编号。其中2,124个在过去三十天里记录到了访问。第一个数字更大,而且同样是真实的,它描述的是一个档案柜。第二个数字描述的是正在运行的东西。页面上展示的是第二个数字,下方的标签说明了它究竟是这两者中的哪一个。

379,174 — 自 2006 年发出2,124 — 30 天内有记录页面上放的是后一个数字

这种做法背后的两个小细节

这对缓存数据会带上计算它们时所对应的日期。当这个日期不再是今天时,页面就会重新计算——并且是在开始计算之前就先写入新日期,而不是算完之后再写。否则,如果两个人在午夜过后同一秒打开页面,就会同时触发慢查询,而在一台为每个连接分配独立进程的机器上,这会变成所有其他人都要承受的慢页面。

如果查询失败,对应的方块会直接消失,而不是显示一个零。显示零就等于是在做出一个断言。

页面的其余部分

页面的其余部分也是同一时间重写的:计数器究竟是什么、统计页面上最终会有什么内容、访客的数据会经历什么、与常见分析脚本之间的一份如实比较,以及大家最常问我们的问题。现在这个页面已经翻译成全部十一种语言,而不再是原来的五种。

这个页面上原本的一些内容被拿掉了,而这件事本身,后来发现值得专门写一篇文章来说明。

广告