最可靠方式是直接嵌入GA4代码,需在插入gtag脚本并配置测量ID;国内建议同步部署百度统计或腾讯分析;自建统计须处理CORS、缓存、上报时机及重试;验证时需避开file://协议、内部IP过滤和插件干扰。
HTML5 页面发布后无法自动统计访问量,必须手动添加第三方统计脚本。目前主流且免费可用的是 Google Analytics 4,它不依赖 Cookie,兼容现代隐私策略,比旧版 UA 更稳定。
操作要点:
Google Analytics 后台创建 GA4 媒体资源,获取 G-XXXXXXXXXX 格式的测量 ID 标签内(注意替换 G-XXXXXXXXXX)GA4 默认采集页面浏览、停留时长、跳出率等基础指标,无需额外配置即可使用。若页面是单页应用(SPA),需手动调用 gtag('event', 'page_view', ...) 触发路由变化统计。
GA4 在中国大陆部分地区存在加载不稳定、延迟高甚至无法加载的问题,导致数据丢失。若目标用户主要在国内,建议同步部署百度统计(tongji.baidu.com)或腾讯分析(mta.qq.com)作为备用或主用方案。
常见问题:
Failed to load resource: net::ERR_BLOCKED_BY_CLIENT,多因广告拦截插件屏蔽了 hm.js
mta.qq.com 创建站点并获取 APPID,其 SDK 更轻量,对首屏影响小百度统计基础代码示例(放在 底部):
如果出于数据主权或合规要求必须自建统计服务(如用 Node.js + SQLite 记录 PV/UV),关键难点不是写接口,而是前端如何可靠上报且不被浏览器拦截。
必须处理的细节:
fetch 发送 POST 请求时,服务端响应头必须包含 Access-Control-Allow-Origin,否则触发 CORS 错误/log?_t=1712345678900)防止强缓存导致漏报window.onload 之后才上报,应尽早执行(例如在 DOMContentLoaded 阶段),否则用户快速关闭页面会导致丢失简易前端上报示意(不依赖第三方库):
function reportPageView() {
const url = '/api/log?path=' + encodeURIComponent(window.location.pathname) + '&_t=' + Date.now();
fetch(url, { method: 'POST', keepalive: true })
.catch(() => {
// 失败时尝试 localStorage 缓存,下次页面加载再补发
const pending = JSON.parse(localStorage.getItem('pending_logs') || '[]');
pending.push({ url, ts: Date.now() });
localStorage.setItem('pending_logs', JSON.stringify(pending.slice(-10)));
});
}
document.addEventListener('DOMContentLoaded', reportPageView);
刚部署统计代码后,常误以为“没数据=没生效”,其实多数情况是延迟或过滤规则导致。GA4 和百度统计的实时报告有 1–3 分钟延迟,且默认排除内部 IP(如公司办公网)、已安装广告拦截插件的用户、以及启用了“请勿跟踪”(DNT)请求头的浏览器。
快速验证步骤:
Network 标签页过滤 collect(GA4)或 hm.gif(百度统计),确认请求发出且返回 200DebugView 或百度统计的 代码检查工具,它们能显示字段是否正确传递最容易被忽略的是:本地开发时用 file:// 协议打开 HTM
L,所有统计脚本都会因协议限制失效——必须通过 http:// 或 https:// 提供服务才能正常上报。