惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

www.infosecurity-magazine.com
www.infosecurity-magazine.com
aimingoo的专栏
aimingoo的专栏
博客园 - 叶小钗
Jina AI
Jina AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
博客园_首页
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
云风的 BLOG
云风的 BLOG
腾讯CDC
V
Visual Studio Blog
宝玉的分享
宝玉的分享
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
Simon Willison's Weblog
Simon Willison's Weblog
H
Help Net Security
AWS News Blog
AWS News Blog
P
Proofpoint News Feed
月光博客
月光博客
T
Threatpost
Recent Announcements
Recent Announcements
G
Google Developers Blog
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Latest news
Latest news
T
The Exploit Database - CXSecurity.com
Security Archives - TechRepublic
Security Archives - TechRepublic
Google DeepMind News
Google DeepMind News
Google DeepMind News
Google DeepMind News
V
V2EX
P
Proofpoint News Feed
Y
Y Combinator Blog
The Register - Security
The Register - Security
N
News | PayPal Newsroom
L
Lohrmann on Cybersecurity
H
Hacker News: Front Page
MongoDB | Blog
MongoDB | Blog
量子位
T
Troy Hunt's Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recent Commits to openclaw:main
Recent Commits to openclaw:main

枫林灯语

我为小说忙:(三)插件(读取部分) - 枫林灯语 我为小说忙:(二)插件的几个前端页面 - 枫林灯语 无用命途:只有 32v 的家用电? - 枫林灯语 好像...是放暑假了吧? 我为小说忙:(一)TPNovel 的规划 - 枫林灯语 无用命途:酒精,酒精膏? - 枫林灯语 JustWrite:只要写,就行了 - 枫林灯语 每日牢骚:便宜宾馆历险记 - 枫林灯语 生活碎碎念:镜花水月里的 Cosplay(续) - 枫林灯语 博客装修记:专题页导航 - 枫林灯语 Typecho 内置的反垃圾评论功能,尚能饭否? - 枫林灯语 分析 Nginx 访问日志,在里面挖点宝 - 枫林灯语 生活碎碎念:镜花水月里的 Cosplay - 枫林灯语 网站缓存好是好,权衡利弊更重要 - 枫林灯语 生活碎碎念:小城大梦(续) - 枫林灯语 别让 AI 拿走你的缩影 - 枫林灯语 泰国 245MHz:谨慎购买『红色外壳对讲机』 - 枫林灯语 430MHz 频段:网红对讲机是如何给你埋陷阱的 - 枫林灯语 巧借天工来降温:水蒸发制冷篇 - 枫林灯语 请尽量让你的域名在你手上 - 枫林灯语 生活碎碎念:小城大梦 - 枫林灯语 各色 AI 极地大冲击 - 枫林灯语 巧借天工来降温:通风冷却的那些事 - 枫林灯语 生活碎碎念:如何绘制清明拜山图 - 枫林灯语 IPv8:也许是一场迟来的梦 - 枫林灯语 别了,房间里的老空调 - 枫林灯语 房间里那台不给力的空调 - 枫林灯语 2026 年的第一场空调 - 枫林灯语 生活碎碎念:考试已毕,下大雨,木头窗户,弹珠区 - 枫林灯语 406MHz 共用对讲机 确实不收频占费 - 枫林灯语 换宽带记(下):继续的续费 - 枫林灯语 换宽带记(上):优惠套餐的困境 - 枫林灯语 请正确设置 HTML 的『页面语言』属性 - 枫林灯语 高频信标:海盗们的无线电『灯塔』 - 枫林灯语 生活碎碎念:三重因素交织的戒断反应 - 枫林灯语 谜之 450 MHz:用途到底是什么? - 枫林灯语
谨慎处理 img 统计像素的几个问题 - 枫林灯语
墨枫梧桐 · 2026-05-19 · via 枫林灯语
分类:编程 字数:2552 阅读:0

有一些第三方站点,例如一些博客聚合站等,会提供统计像素(Tracking Pixel),形式为一个小体积的图片,将其插入到网页上之后,就可以统计网站的浏览量了。

最近笔者碰到统计量大幅下跌的问题,查阅资料,结果发现了现代浏览器的几个比较有趣的特性,会影响到此类统计像素的实际效果。比如说,你知道prefetch的意思是『先别加载』吗?

大幅下跌的访问量大幅下跌的访问量

1. 前言

笔者很少在一天发两篇博文,但今天有些特殊。

具体来说是,在Umami后台统计今日访客UV有190+的情况下,引言中图片显示的UV只有53。通常来讲,考虑到统计方式不同,浏览器具体行为不同,访问量差个十几二十的很正常,但现在差了一百多,显然是出问题了。

回顾一下统计像素的统计原理:浏览器加载图片的时候,后台就能拿到请求的IP,User-Agent等信息,这样就可以计算一个哈希值,来匿名地(同时也是粗略地)标定一个用户了。不难看出,这一切的前提,就是浏览器发出了这个请求。如果浏览器根本不发出请求,统计像素根本无法统计,数量对不上的问题自然就出现了。

2. 一些常见的问题

虽然说这种基于img的统计像素已经比较少见,大多数都已经专为基于js的统计代码,以便更详细地检测各类统计信息。但在一些更注重隐私的场合(例如无法/关闭了执行js代码功能的浏览器环境),以及第三方统计站的情况下,统计像素依然存在。所以,还是尽量让他准确一些为好。

当然,说是说『几个问题』,但下面只列出来两个新碰到的问题,有些『无三不上几』之嫌。除了拟定标题的时候有些大意了之外,主要还是一些老生常谈的问题,比如『display:none可能导致不加载』,已经算是共识了;还有一些比如『加上decoding="async"让解码不阻塞渲染』之类的小技巧,因为不算是问题,所以也就简单提一嘴罢了。

2.1 不要 lazy

某博客聚合站给出的统计像素如下所示:

<img src="..." loading="lazy">

这个属性会告诉浏览器,延迟加载此请求。对不同元素,具体行为有些差异,但对图片来说,默认就是『快要进入视窗范围内才加载』。

巧合的是,这个站点的统计像素实际上并非『像素』(即传统的1x1 GIF),而是一幅小图片,所以很多站长会把他放在页脚。问题来了,页脚是需要滚动很远才能到达的,添加loading="lazy"可能会让浏览器延迟很久才加载,甚至对于某些点开看看就走了的访客来说,根本就不会加载。

此外,雪上加霜的是,新一些的浏览器支持另外一个属性fetchpriority="low",意思是降低资源优先级。本意上,你可能想要让统计像素加载过程不阻塞主页面渲染,因此稍后再加载,但如果同一个元素上还有loading="lazy",这二者结合起来,可能会给浏览器错误信息,会误认为作者明确表示这东西完全不重要。从而加载更慢。特别地,如果访客用手机访问、弱网环境下访问、节电模式访问、省流量模式访问,再配合某些『把统计像素放在屏幕八百里开外』的CSS,上述组合可能导致统计像素根本不加载,使得统计完全失效。

2.2 小心prefetch

另外一个站点给出了一个『无图统计』的代码:

<link rel="prefetch" as="image" href="...">

说是,只要放入<head>内,就可以利用现代浏览器预取机制,实现无图片统计。

然而,这种做法可能会导致统计效果更差。根据资料来看,现代浏览器倾向于把prefetch请求的优先级降低(甚至有说法称,会直接降到最低),只有在页面空闲(比如,有可能是,用户不操作)的时候,才会加载这部分内容。如果页面目前正忙,不好意思,同样不会加载。

另外,目前的主流的浏览器对『执行prefetch』的实现不完全一致,比如说,他可以决定:

  • 网络空闲才执行
  • WiFi才执行,开流量不执行
  • 在前台才执行,后台不执行
  • 电池模式,不执行
  • 隐私模式,不执行
  • 小站点,首次访问站点,信誉低,不执行

尤其是Chrome,近几年好像还在优化非关键资源的优先级分配,还有就是,部分浏览器,如Safari,不支持prefetch,对于这种依赖Prefetch的统计像素来说,更是雪上加霜。

所以可以认为,prefetch不适合『访问计数』的场景,请尽量避免使用。

3. 写在最后

简单记录一下这两个发现,应该能帮助各位站长排除故障。

去除上面那些属性之后,如果实在是不行,就把标签提上来一点,比如放在<body>开头处之类的地方,看看效果有没有改善吧。

(完)