为什么缓存的图像不计入统计
本文内容
关于网站统计数据,一个常见的困惑来源,涉及本地文件存储这个概念——它通常被称作浏览器缓存。网络浏览器在设计上,追求的是最大限度的效率和速度。
一个页面被第一次访问时,浏览器会把所有必要的文本、版式和图形都下载下来。为了不在后续的访问中白白浪费时间和网络资源,它把这些静态文件的副本存到了本地的硬盘上。
如果在不久之后又打开了完全相同的那个页面,浏览器会直接从这处本地的存储里把图形取出来,而不去向远处的服务器要一份新的副本。这个过程大幅缩短了加载的时间,但它也直接影响到外部的测量工具是怎样运作的。
服务器从未见到的那次访问
基于图像的计数,其机制完全依赖于服务器收到一次请求。如果浏览器判断本地存下来的那份图形副本依然完全有效,它就根本不会再往互联网上发出任何一条讯息。
从服务器的角度看,第二次访问压根就没有发生过。于是,数据库里的内部数字不会被更新,屏幕上的那张图形也就继续显示着先前的那个值。
这种行为常常让人误以为工具坏了,尤其是在测试的阶段——页面被接连不断地快速重新加载好多次。数字没有更新,并不是系统出了故障,反倒是一个迹象:浏览器正完全按照预期的样子工作,为的是省下流量。
跟着文件一起走的那条指令
为了管理这种行为,服务器可以在它送出的文件上附带一些特定的指令。这些被称作缓存标头的指令,会准确地告诉接收的浏览器:一份文件该保留多久,以及什么时候必须去请求一份新的副本。图库里的一张照片,随附的指令可能允许它被存上整整一年。
然而,一张显示着不断变化的数字的动态图形,需要的是完全不同的规则。生成这张图形的服务器必须明确地指示浏览器:永远不要把这个图像存下来,或者至少在每一次页面浏览时,都向服务器核实它是不是新的。
准确与开销之间
把这些严格的规则落实下来,能确保准确度高出许多,因为它逼着浏览器在每一次打开页面时都重新报到一次。不过,把测量图形的缓存彻底关掉,也意味着服务器必须处理数量大得多的请求。
它必须专门分配处理能力以针对每次重新加载重新绘制图像,即使数字仅更改了一。
在准确的记录与合理的资源管理之间找到恰当的平衡,是运营这样一项服务的核心任务。有时候,让可见的数字晚一点更新,是一笔值得做的交换——它让整套基础设施保持快速和灵敏,也保证主页面的内容永远不会被拖慢。
为什么刷新证明不了什么
了解本地存储的作用澄清了为什么重复手动重新加载是验证测量工具准确性的糟糕方法。
如果按了五次重新加载按钮,数字仍旧不肯往上走,最有可能的解释是:浏览器不过是在重复使用它第一次下载下来的那张图形。换一个完全不同的浏览器打开,或者在另一条网络连接上用一台单独的设备,就能彻底绕开本地的存储,强制发出一次新的请求。
这种方法提供了一个更加清晰的画面,说明服务器是否正在正确注册新访客并为页面生成更新的图形。