如何获得静态网站的真实页面浏览数

392 阅读3分钟

给定一个静态网站,如何获得访客的真实数量?

更新:Netlify Analytics也是一个好主意

这是一个静态网站。我使用谷歌分析,而我的受众是开发者。

对于不准确的分析数据来说,这是一个完美的组合,因为许多开发人员使用广告拦截器,它可能(或可能不,这取决于)阻止谷歌分析数据传输到服务器。有些开发者甚至完全屏蔽了JavaScript,但我认为这是一个较小的人群,所以是一个不太有问题的事情。

我一直有这样的疑问:真正的访客数量是多少?我所看到的访问者的百分比是多少?

我的主机供应商不提供任何关于访问量的信息。我只知道我所消耗的带宽。

所以我决定测试一个想法。

我在每篇文章中都包含一张图片,一张非常小的图片。

这不是什么新鲜事:电子邮件营销软件自动使用这种 "技巧 "来计算打开率。

我使用了1px x 1px的SVG图片,141字节的数据,以产生最小的影响。

我在Glitch上做了一个Node.js网络服务器。如果你在网站中加入图片,像这样。

<img src="https://<name-of-the-project>.glitch.me/pixel.svg" />

住在那个<name-of-the-project>.glitch.me URL上的Node.js网络服务器就会把图片送回来。

但首先,它要递增一个值。

const express = require('express')
const app = express()
let counter = 0

app.use(
  express.static('public', {
    setHeaders: (res, path, stat) => {
      console.log(++counter)
    }
  })
)

const listener = app.listen(process.env.PORT, () => {
  console.log('Your app is listening on port ' + listener.address().port)
})

这个应用程序的重要部分是我们传递给express.static() 的对象。通常我们不会向这个方法传递额外的对象,但在那里提供了setHeaders() 函数,这样我们就可以为将要被送达的文件设置一些额外的头信息。

我们在那里添加我们的console.log() ,为我们的目的滥用了这个函数。

这很简单,而且由于Glitch的工作方式,每次你更新应用程序时,计数器都会重置。

当然,这不应该是你的分析工具。只是一个快速测试分析数据是否与现实相符的方法。通常,几乎没有人屏蔽图片。

这也可以用不同的方法,因为我使用的是SVG,我也可以直接发送一个字符串到客户端,并加上适当的Content-Type header。我不知道这是否会更快,我还没试过。

你也可以用同样的方法提供一个CSS文件。我只是碰巧选择了一张图片。

我让这个运行了3-4个小时,与Google Analytics的日志相比,数据显示,访问我网站的人中大约有10%没有向Google Analytics发送数据。

不是很多。我期望的要多得多,比如2倍的访问者。或50%以上。但只是10%的增量。

这对我来说实际上是最好的,因为这意味着谷歌分析的数据仍然非常有用。