VisitAnalytics

VisitAnalytics 是一个独立的 Typecho 访问统计插件。它不依赖、不会读取或写入 LZStat 的数据。

插件统计公开页面的 PV、每日 UV 和会话数,并提供日趋势、文章访问排行、来源、入口页、设备分布、访问时段和 CSV 导出。

环境要求

  • Typecho 1.3.0 或更高版本。
  • PHP 8.0 或更高版本。
  • MySQL、PostgreSQL 或 SQLite 数据库之一。
  • 后台管理员权限。

安装

  1. 将整个 VisitAnalytics 目录放入 Typecho 的 usr/plugins/ 目录。
  2. 确认入口文件位于 usr/plugins/VisitAnalytics/Plugin.php
  3. 登录 Typecho 后台,进入“控制台 -> 插件”。
  4. 找到 VisitAnalytics,点击“启用”。
  5. 启用时插件会创建自己的统计表,并新增“访问统计”后台菜单。

插件只创建名称以 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 不共享浏览量字段。两个插件展示的数字可能不同,因为统计口径和去重策略不同。

截图

image.png

image.png

image.png

image.png

image.png

image.png

下载:

20260728更新:
修复自定义了后台管理目录后,插件设置页面样式丢失顶部菜单栏的问题。
新下载地址:
VisitAnalytics1.0.1.zip