對於一個靜態網站,你如何得到真實的訪問人數?
更新:所有主要的平台現在都有自己的分析解決方案(Netlify、Vercel、Cloudflare..),同時,你也可以自主托管Plausible。
這是一個靜態網站。我使用Google Analytics,而我的目標受眾是開發人員。
這是一個完美的組合,但卻會導致不準確的分析數據,因為許多開發人員使用廣告屏蔽軟件,這可能(取決於情況)阻止Google Analytics數據傳輸到服務器。一些開發人員甚至完全阻止JavaScript,但我假設這只是一小部分人,所以並不是一個大問題。
我一直有這個疑問:真正的訪問人數是多少?我能看到的訪問者占百分之幾?
我的託管服務商沒有提供關於訪問量的任何信息。我只知道我消耗的帶寬。
所以我決定試一個想法。
我在每篇文章中都包含一個圖像,一個很小的圖像。
這不是什麼新鮮事:電子郵件營銷軟件自動使用這種“技巧”來計算開封率。
我使用了1像素x 1像素的SVG圖像,長度為141字節,以減少影響。
我在Glitch上建立了一個Node.js Web服務器。如果你在網站中包含了這個圖像,就像這樣:
<img src="https://<name-of-the-project>.glitch.me/pixel.svg" />
將會將圖像返回給位於<name-of-the-project>.glitch.me
URL上的Node.js Web服務器。
但首先,它會增加一個值:
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
標頭。我不知道這樣是否會更快,我還沒有試過。
你也可以以相同的方式提供CSS文件。只是我碰巧選擇了一個圖像。
我讓這個運行了3-4小時,數據與Google Analytics日誌相比,顯示大約有10%的訪問者沒有向Google Analytics發送數據。
並不多。我預期會有更多,像訪問者的兩倍。或者多50%。但僅僅增加了10%。
對我來說,這實際上是最好的,因為這意味著Google Analytics的數據仍然非常有用。