zazama / analytics
1.0.0-beta6
2022-07-29 11:23 UTC
Requires
Requires (Dev)
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^3
This package is auto-updated.
Last update: 2023-02-15 22:45:10 UTC
README
当前处于测试版
介绍
此模块可以在Silverstripe中启用基本分析,而不保存识别数据。
要求
- silverstripe/framework ^4.0
- silverstripe/admin ^1.0
此模块仅在 >= 4.9 的版本上进行了测试。
安装
composer require wakeworks/analytics
/dev/build 后,模块将开始记录请求。您可以在 /admin/analytics 中找到数据概述。
注意:如果您不希望数据库无限增长,请阅读 "垃圾回收"。
它是如何工作的?
- 在每次请求中,用户都会将其 User-Agent 字符串发送到服务器。使用中间件和 matomo/device-detector,我们可以解析它并检查它使用的是哪种浏览器/设备或是否为机器人。
- 这些信息将与其他收集到的分析数据一起存储在数据库中。
- 在用户的首次访问中,我们在会话中写入一条注释,以便能够将其标记为唯一。
- 为了尽可能多地过滤掉机器人,我们不保存任何具有未知 User-Agent 的请求。为了优化机器人检测,请使用图像验证。
此外,一些路由会自动跳过,例如 UserDefinedFormController/ping、/admin/* 或 /dev/*,请参阅 "何时不存储信息?"。
通过使用图像验证来提高机器人检测
虽然删除未知 User-Agent 已经移除了一部分机器人,但仍有许多爬虫只是调用您的网站而不加载其内容。
为了从统计中移除它们,您可以通过以下配置激活它,以插入图像跟踪代码。
WakeWorks\Analytics\Middlewares\AnalyticsProcessorMiddleware: image_verification: true
此方法通过在每次有效的跟踪请求之前在 </body>
前插入一个隐藏的 <img>
标签来实现。如果用户加载了图像,则请求将在数据库中创建一个条目,否则不会。
垃圾回收
经过一段时间,您的数据库将充满许多您可能不再关心的请求(例如非常旧的请求)。
使用任务 /dev/tasks/AnalyticsGarbageCollectionTask
来删除它们。
您应该通过 cron 作业或,如果不可能,通过通过中间件激活垃圾回收来每 x 次请求自动执行此操作。
WakeWorks\Analytics\Middlewares\AnalyticsProcessorMiddleware: # Run AnalyticsGarbageCollectionTask with probability of 1/100 # => ~ every 100 requests. (Default: 0, off) gc_divisor: 100 # Delete requests older than (default) 365 days. preserve_for_days: 365
仅当收集的请求数量合理时才这样做,否则删除查询可能对访客来说会非常耗时。
子站点的扩展
如果您已安装silverstripe/subsites
并希望通过子站点进行跟踪,您只需启用SubsiteExtension
,一切即可自动正常运行。
WakeWorks\Analytics\Models\AnalyticsLog: extensions: - WakeWorks\Analytics\Extensions\SubsitesExtension
存储哪些信息?
- 当前日期
- 请求的URL
- 操作系统及版本
- 浏览器及版本
- 设备类型(桌面、智能手机等)
- 唯一访问
- 如果可能,SiteTreeID(页面ID)
在哪些情况下不存储信息?
- 无法识别的/机器人用户代理
- 由于机器人垃圾邮件等原因,状态码不在200-204之间的情况
- 管理员后台URL
- 安全URL/控制器
- 开发管理员控制器(/dev URL)
- 用户自定义表单控制器/ping