一张图片如何计数
本文内容
可见的网页计数器背后的机制,建立在互联网通信的一条基本原则之上:请求与响应。每一次网页被加载的时候,浏览器都会读一遍源代码,并在其中发现对外部元素的引用——比如样式表、字体和图形。
为了把完整的页面拼装起来,浏览器必须逐一联系托管着这些元素的各个服务器,一个一个地去请求它们。正是这个过程,构成了在不依赖复杂跟踪脚本的前提下记录访问的基础。
只要在页面里嵌入一个图片标签,那么每一次这个页面被查看,就都会生成一次有意为之的请求。而接收这个请求的服务器并不只是交出一个静态的文件:它先记录下这个事件,再做一次计算,然后才把图形送出去。
候诊室里的取号机
从实体世界里可以找到一个有用的类比:许多候诊室里都有的取号机。这台机器里装着一卷编了号的纸条。当一位来客抽走一张纸条的时候,有两件事同时发生——来客拿到了一个号码,而机器往前走了一格,把「又有一个人到了」这件事记了下来。
可见计数器的工作方式完全相同。网站上的图像标签充当拉动票据的手。
服务器扮演的就是取号机的角色。它记下这一次抽取,记下请求的时间和来处,把内部的总数加一,然后把新的号码印到一张数字化的票据上。这张票据,就是最后出现在屏幕上的那张图形。
后台没有发生的事
这个办法和现代那些沉重的分析平台差别很大。那些平台要求浏览器先下载、再执行大量的程序代码,之后由这些代码去观察访问者的行为,并在后台悄悄地把结果报回去。
纯粹基于图像的计数器完全跳过了这一点。浏览器只是要求一张图片。整个计数逻辑都发生在远处的服务器上,安全地避开了浏览器限制或丢失的脚本权限。
正因为没有后台的观察,这套机制在本质上就是轻的。整个数据往来只包含最初的那一次请求,和随后送来的一个很小的图片文件——通常只有几千字节重。
图是当场画出来的
最终到达屏幕上的图像是实时动态生成的。它不是位于文件夹中的预先绘制的图片。
实际发生的是:服务器从选定的设计目录里取出一张空白的模板,为刚刚加过一的总数挑出正确的数字,再把它们画到背景上去。这一切都发生在一瞬之间,查看页面的人完全察觉不到。
最终的图形是带着标准的图片头部送出来的,也就是说,浏览器把它当作任何一张普通照片来对待。这种毫无缝隙的融入保证了计数的过程永远不会干扰网站真正的内容——它纯粹通过网络本身的标准机制,提供一份可靠的计数。
这种在服务器一侧生成图片的做法,让设计在所有的查看环境里都保持完全一致。由于那些数字在文件离开服务器之前就已经实实在在地画进了图片的像素里,也就不必再担心字体缺失的问题。