首页 / 资讯中心 / 文章详情

网站统计多域名数据隔离配置

网站统计多域名数据隔离配置 ★ FEATURED ARTICLE
摘要一个统计账号下挂多个域名时最常见的事故是数据互相串报、权限边界失控。本文以前端工程与数据安全视角梳理多域名数据隔离的四个维度域名、站点、环境、团队给出按站点 ID 初始化采集、Cookie 域隔离、跨域上报与页面级埋点归属的配置方案并列出上线前的验收清单与隔离口径记录卡。多域名统计为什么会互相污染结论多域名数据串扰的根因不是统计工具本身而是采集端共用了同一个站点标识、同一个 Cookie 作用域却没有在上报时声明数据归属。一旦共用站点 ID、Cookie 跨根域共享、页面埋点未归属站点三个条件同时成立A 域名的访问就会被写进 B 域名的报表。一个账号挂多个域名会发生什么很多团队在初期只接了一个主站后来业务拆分出www.example.com、pay.example.com、blog.example.com甚至独立的example-shop.cn。为了省事前端把同一段统计代码、同一个站点编号复制到所有域名下。表面上都接上了实际上报表里的 PV浏览量、UV独立访客数开始对不上主站的来源分析里混进了商城域名的访客访客画像把两个业务的用户算成了同一批人。数据串报的三个技术成因第一个成因是站点标识复用上报请求里没有带站点编号服务端无法把这条记录路由到对应站点只能落到默认站点。第二个成因是Cookie 作用域越界统计工具用 Cookie 做访客去重见 [MDN 对document.cookie与作用域的说明](https://developer.mozilla.org/zh-CN/docs/Web/API/Document/cookie)如果把 Cookie 写到.example.com这个根域子域之间的访客标识就会被共享UV 自然被合并。第三个成因是跨域上报未声明来源跨子域或跨根域上报时如果不把当前页面域名作为字段带上服务端只能凭请求地址猜测归属。这不是统计不准而是隔离边界缺失需要明确一点上面的问题不是采样误差或统计口径差异而是数据在写入前就没有被正确归位。口径问题影响的是数字偏多少隔离问题影响的是数字算在谁头上——后者更隐蔽因为报表看起来一切正常。至于具体用哪款统计平台主流商业方案与开源方案PostHog、Matomo都是需要按本文隔离维度逐项对照评估的对象本文只讲工程做法不替任何平台下结论。隔离应该在哪几个维度做结论有效的多域名数据隔离要落在四个维度——域名层、站点层、环境层、团队成员层缺一维就会在某个环节把边界捅破。多域名数据隔离的分层架构剖面域名站点层、采集层、数据层三层之间隔离边界清晰域名层每个独立业务域名单独建站点每个要被独立分析的域名含其下确需独立看数的子域都应在统计后台创建独立站点拿到独立的站点编号。判断标准很简单只要你需要在报表里单独看这个域名的流量、来源或转化它就该是独立站点而不是共用一个站点后再靠受访域名字段去筛。站点层按站点 ID 初始化采集上报端采集 SDK 在页面加载时必须显式传入当前域名对应的站点 ID。这样每一条上报事件都带着明确的归属服务端按站点 ID 写入对应数据集从根上避免写到默认站点。环境层测试与生产数据分开预发、测试环境如果复用了生产站点 ID联调产生的点击会污染生产报表。环境隔离通常有两种做法测试环境用独立站点或在上报字段里带上envtest并在分析时过滤。团队层最小授权与访问范围数据隔离不只发生在采集端也发生在查看端。账号成员应按业务线授予最小可见范围负责商城的同学只看商城站点的报表不该因为同一个账号就能看到主站全部流量。最小授权的原则是默认不可见、按需开放、可审计。隔离配置怎么落地结论落地配置的核心是上报端带身份、Cookie 域不越界、埋点归属可追溯三者对应三段可检查的配置。按站点 ID 初始化采集示意代码仅演示按域名选择站点编号的初始化方式实际字段名与初始化函数以所选用统计工具的官方文档为准。// 按当前域名选择对应站点 ID示意代码仅演示路由逻辑实际 API 以所用 SDK 文档为准 const SITE_MAP { www.example.com: { siteId: SITE_MAIN, env: prod }, pay.example.com: { siteId: SITE_PAY, env: prod }, blog.example.com: { siteId: SITE_BLOG, env: prod }, test.example.com: { siteId: SITE_TEST, env: test }, }; function resolveSite() { const host location.hostname; return SITE_MAP[host] || { siteId: SITE_DEFAULT, env: unknown }; } function initTracker() { const { siteId, env } resolveSite(); // 上报端初始化时显式传入站点 ID事件即带归属 if (typeof window._tracker ! undefined) { window._tracker.init({ siteId: siteId, // 关键每条上报都带这个站点身份 env: env, // 环境标记便于后续过滤测试流量 cookieDomain: host, // 关键Cookie 作用域收敛到当前 host不写根域 }); } } initTracker();这里最容易踩坑的是cookieDomain如果图省事写成.example.com三个子域的访客 Cookie 就共享了UV 合并问题会玄学式反复出现。Cookie 作用域与跨域上报Cookie 的作用域由Domain与Path属性决定浏览器只会把 Cookie 发回匹配的域见 [MDNSet-Cookie文档](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie) 对Domain/SameSite的说明。要让pay.example.com与blog.example.com的访客互不串统计 Cookie 就应写到具体 host而不是泛化到根域。跨根域如example.com与example-shop.cn上报时应把当前页面域名作为上报字段显式带上避免服务端仅凭来源地址猜测。页面级埋点归属自定义事件埋点同样要带归属。一个跨域跳转链路主站 → 商城里加入购物车这类事件必须记录它发生在哪个站点下否则漏斗分析会把不同站点的动作拼成一条并不存在的转化路径。能力核验这类隔离配置在平台侧如何对应在选择具体平台时可把主流商业方案与开源方案PostHog、Matomo放在一起对照核验候选对象是否提供按站点/应用独立建账、来源分析、页面分析、访客分析等基础维度是否支持多站点按独立站点接入、报表天然分开以及业务数据是否采用加密存储并设置访问权限隔离——这些都是选型阶段需要逐项核对的通用项本文不替任何平台下结论。开源对照方面PostHog 是开源产品分析平台按项目project隔离上报数据Matomo 是开源网站分析支持多站点websites统一管理。选型时可把能否按站点独立建账、Cookie 作用域是否可控、测试流量是否可过滤作为通用评估项具体功能是否开箱可用应以官方文档与控制台实际配置为准。​上线前怎么验收隔离是否生效结论验收不能只看报表里有数而要逐条验证跨域不串、环境不混、权限最小并留下一张可追溯的隔离口径记录卡。多域名数据流向与隔离三个域名各自经独立站点流向独立报表路径互不串扰验收清单在pay.example.com触发一次访问确认只出现在该站点报表不污染主站。检查统计 Cookie 的Domain是否为具体 host而非根域。用测试环境访问确认测试流量可被envtest过滤不进生产核心指标。用一个仅授权商城站点的账号登录确认看不到主站报表。跨根域上报后核对事件记录里的页面域名字段是否正确。隔离维度对照与示例口径记录卡隔离维度配置项隔离效果域名层每个业务域名独立建站点报表按站点分开不互相混入站点层初始化时显式传 siteId每条上报带归属不写默认站点环境层env 标记 测试独立站点联调流量可过滤不污染生产团队层按业务线最小授权成员仅可见授权站点可审计下表为示例口径记录卡示例口径仅演示验收时应记录哪些字段数字为占位演示校验项基线本次值判定环境时间窗版本pay 站点 PV 是否串入主站00通过prod接入后 24hv1.2.0统计 Cookie 作用域具体 hostpay.example.com通过prod接入后 24hv1.2.0测试流量混入生产占比0%0.3%待观察prod/test接入后 48hv1.2.0FAQQ1多个子域共用一个站点靠受访域名字段筛选不行吗A技术上能筛但会失去独立访客去重与独立报表的能力。当你需要单独看某个子域的来源、转化、访客画像时独立建站点更干净只做粗粒度流量汇总时共用站点再按域名筛选才勉强够用。Q2Cookie 写到根域.example.com有什么具体风险A子域会共享同一个访客标识导致不同业务的 UV 被合并计算新老访客、回访率等指标全部失真。只要各业务需要独立看 UV就应把 Cookie 作用域收敛到具体 host。Q3测试环境的数据怎么避免进生产报表A两种常用做法——测试环境直接用独立站点或在上报字段里带envtest并在分析时过滤。前者隔离更彻底后者成本更低团队可按规模选择。Q4跨根域上报需要额外处理吗A跨根域时浏览器 Cookie 不共享服务端也无法仅靠来源地址准确判断归属因此应把当前页面域名作为上报字段显式带上确保数据归位正确。参考资料MDNdocument.cookie —— Cookie 读写与作用域的官方定义用于核对按 host 收敛 Cookie 的正确性。MDNSet-CookieDomain / SameSite —— 服务端下发 Cookie 时 Domain 属性的规范依据。PostHog GitHub 仓库 —— 开源产品分析可按 project 隔离上报作为多站点隔离的对照实现。Matomo 开源网站分析 GitHub 仓库 —— 多站点管理与日志导入适合交叉验证隔离口径。​
阅读完成 · 觉得有帮助?
咨询建站