VisitAnalytics
VisitAnalytics 是一个独立的 Typecho 访问统计插件。它不依赖、不会读取或写入 LZStat 的数据。
插件统计公开页面的 PV、每日 UV 和会话数,并提供日趋势、文章访问排行、来源、入口页、设备分布、访问时段和 CSV 导出。
环境要求
- Typecho 1.3.0 或更高版本。
- PHP 8.0 或更高版本。
- MySQL、PostgreSQL 或 SQLite 数据库之一。
- 后台管理员权限。
安装
- 将整个
VisitAnalytics目录放入 Typecho 的usr/plugins/目录。 - 确认入口文件位于
usr/plugins/VisitAnalytics/Plugin.php。 - 登录 Typecho 后台,进入“控制台 -> 插件”。
- 找到
VisitAnalytics,点击“启用”。 - 启用时插件会创建自己的统计表,并新增“访问统计”后台菜单。
插件只创建名称以 visit_analytics_ 结尾的独立数据表,不会修改 contents 表,也不会影响其他统计插件。
快速开始
启用后默认使用“服务端模式”。站点每次通过 Typecho 渲染公开页面时,插件会自动记录访问,无需修改主题。
在“控制台 -> 访问统计 -> 概览”中可以查看:
- 近 7 天、近 1 月、近 3 月、近 1 年及累计数据。
- PV、UV、会话数、文章 PV 和上一等长周期对比。
- 按日访问趋势。
- 当前周期的文章 Top 10。
指标说明
| 指标 | 含义 |
|---|---|
| PV | 一次有效公开页面访问记为 1 次。 |
| UV | 同一访客在站点时区的同一天内只记 1 次。 |
| 会话数 | 同一访客连续访问;超过设定的空闲时间后视为新会话。默认 30 分钟。 |
| 文章 PV | 仅已发布文章页的 PV,用于文章排行。 |
| 累计访问量 | 插件启用以来所有日期 PV 的总和。 |
跨多日周期的 UV 为“每日 UV 的合计”,并非全周期唯一访客人数。例如同一访客连续两天访问,在“近 7 天”中会计入 2 个日 UV。
采集模式
在“控制台 -> 插件 -> VisitAnalytics 设置”中选择采集模式。两种模式只能启用一种,插件不会双重计数。
服务端模式
这是默认模式,适合没有 CDN、静态缓存或整页缓存的 Typecho 站点。
- 不依赖主题脚本。
- 不受浏览器广告拦截规则影响。
- 无需修改主题。
- 如果页面被整页缓存直接返回,PHP 不执行,缓存命中不会被统计。
Beacon 模式
适合使用 CDN、静态缓存或整页缓存的站点。插件会通过 Typecho 的页脚钩子注入同源统计脚本,浏览器在页面可见后向插件接口上报访问。
- 缓存命中页面仍然可以统计。
- 依赖浏览器执行 JavaScript,禁用 JS 或被拦截时可能漏记。
- 主题必须在页面底部调用标准 Typecho 钩子:
<?php $this->footer(); ?>大部分 Typecho 主题已经包含该调用。若第三方主题没有调用,Beacon 脚本无法注入;请在主题 </body> 前加入上面的代码,然后清理页面缓存。
从服务端模式切换到 Beacon 模式后,应清理 CDN 或整页缓存,确保缓存页面带有新的统计脚本。
配置项
| 配置项 | 说明 |
|---|---|
| 采集模式 | 选择服务端模式或 Beacon 模式。 |
| 会话空闲时间 | 5-240 分钟;超过该时长会创建新会话。 |
| 重复刷新抑制 | 同一访客在设定秒数内重复访问同一页面只计一次;设为 0 关闭。 |
| 访客去重记录保留天数 | 7-730 天;只影响 UV/会话去重记录,不影响日统计和累计数据。 |
| 排除管理员访问 | 建议保持开启,避免后台维护行为影响数据。 |
| 尊重 Do Not Track | 开启后,请求头带 DNT: 1 的访客不会被统计。 |
| 页面范围 | 可选择统计首页、文章、独立页、归档、分类、标签、搜索、Feed 和密码保护内容。 |
| 爬虫 UA 关键词 | 每行或逗号分隔一个关键词;命中 User-Agent 的请求会被排除。 |
默认排除搜索页、Feed、密码保护内容、管理员访问及常见爬虫。
后台功能
“访问统计”菜单包含以下页面:
- 概览:周期切换、指标汇总、趋势、每日明细和文章 Top 10。
- 文章排行:按周期或累计查看已发布文章的 PV/UV,支持标题搜索。
- 来源与画像:来源渠道、来源域名、会话入口页、设备分布和按小时 PV。
- 设置:当前配置说明、缓存主题兼容提示及清空数据操作。
概览、文章排行和来源页均可导出 CSV。导出的 CSV 以 UTF-8 BOM 编码,适合直接用 Excel 打开。
数据与隐私
插件使用随机第一方 Cookie 识别访客和会话。数据库仅保存 Cookie 的 HMAC 哈希,不保存 Cookie 原值、原始 IP、完整 Referer、完整 User-Agent 或 URL 查询参数。
- 来源统计只保存来源渠道和来源域名。
- 入口页会移除查询参数。
- 设备统计只保存桌面、移动、平板分类。
- Cookie 被禁用时 PV 仍会记录,但 UV 与会话无法稳定关联,准确性会下降。
- 每日统计、文章统计、来源、入口、设备和时段聚合数据会永久保留。
- 访客去重记录默认保留 90 天,重复刷新抑制记录保留约 48 小时并自动清理。
如你的站点受 Cookie 同意、Do Not Track 或其他隐私法规约束,请根据所在地要求配置提示、同意机制和“尊重 Do Not Track”选项。
清空数据与停用
- 在“访问统计 -> 设置”中点击确认后可以清空全部 VisitAnalytics 数据。该操作不可恢复。
- 停用插件只会移除菜单、接口和钩子,不会自动删除统计表或历史统计数据。
- 重新启用后会继续使用已有统计表。
常见问题
启用后没有数据
确认访问的是前台公开页面,并且当前管理员访问排除已开启时,不要使用管理员账户测试。可以使用无痕窗口或另一台设备访问文章页后刷新后台查看。
启用了缓存后统计停止增长
将采集模式切换为 Beacon 模式,确认主题底部调用了 $this->footer(),然后清理页面缓存、对象缓存和 CDN 缓存。
为什么 PV、UV 和会话数不同
一个访客可以在同一天浏览多个页面,因此 PV 通常大于 UV;同一访客空闲超过会话时长后再次访问,会增加会话数,但不增加当天 UV。
为什么某些爬虫访问没有统计
插件默认排除常见爬虫。需要调整时,在插件设置的“爬虫 UA 关键词”中删除或修改对应关键词。
能否与 LZStat 同时启用
可以。VisitAnalytics 使用独立的钩子逻辑和数据表,与 LZStat 不共享浏览量字段。两个插件展示的数字可能不同,因为统计口径和去重策略不同。
截图





