根据下载的GB计算访问次数

asa*_*hez 4 math computer-science analytics download

我有一个托管在 firebase 中的网站,该网站在一天之内完全传播开来。由于我没有预料到,我没有安装任何分析工具。但是,我想知道访问次数或下载次数。我唯一可用的指标是下载的 GB:686,8GB。但我很困惑,因为如果我用 Chrome 的控制台打开网站,我会得到两个关于页面大小的不同指标:传输的 319KB 和 1.2MB 的资源。此外,并非所有这些东西都是从 firebase 传输的,而是从其他 CDN 传输的,如您在屏幕截图中所见。计算我访问次数的正确方法是什么?

chrome 浏览器控制台 火力基地截图

Joh*_*ohn 5

  • 传输的指标是应用压缩后使用了多少带宽。
  • 资源指标是这些资源在被压缩(用于传输)之前使用了多少磁盘空间。

真正的分析需要了解如何什么是在网络上。分为三类:

  • 由血肉组成的人类绝大多数(虽然不是绝对)使用网络浏览器。
  • 蜘蛛(或搜索引擎)请求页面的概念是遵守 robots.txt,并将在其网站中列出您的网站以进行相关搜索查询。
  • 拒绝(基本上是垃圾邮件发送者和未知数),其中包括(但不限于)内容/电子邮件抓取工具、暴力密码猜测器、漏洞扫描器和 POST 垃圾邮件发送者。

有了这个澄清,你实际上要问的是,“我接待了多少人类访客?” 获取该信息的最简单方法是:

  1. 确定哪些用户代理请求是人为的(不容易,基于行为)。
  2. 确定一个人的单次访问应计入的时间长度。
  3. 为人类访客分配一个会话。

我假设您了解 cookie 是什么以及它与会话 cookie 有何不同。显然,当您登录网站时,您会被分配一个会话。如果该会话 cookie 未在页面请求中发送到服务器,则您实际上将被注销。您可以使会话 cookie 持续很长时间,这将归结为访问者的便利性以及您是否直接计算这些会话或将其与其他内容结合使用等因素。

现在你的下一个想法可能是,“但我如何计算下载量?” 谢天谢地,你在你的网站上提到了 PHP,所以我可以为你提供一些对你有意义的代码。如果您只是直接链接到该文件,那么您将(充其量)通过锚元素上的点击事件来计算点击次数,但如果下载因为错误或其他原因而被取消,则它比我的建议更主观。当然,我的建议仍然是主观的(例如,他们决定他们实际上不想下载并在完成之前取消),当然,如果他们使用下载是另一个需要考虑的方面。话虽如此,如果您希望服务器为您提供下载计数,您需要执行以下操作:

  1. 您可能希望使用 Apache 重写(或任何其他 HTTP 服务器等效项),以便 PHP 处理下载。
  2. 您可能需要确保 Apache 能够正确处理 PHP(例如AddType application/x-httpd-php5 .exe .msi .dmg),以便您的服务器知道让 PHP 在请求文件上运行。
  3. 为了安全起见,您将希望在服务器上使用file_exists()带有绝对文件路径的PHP 。
  4. 您需要确保通过 PHP 为文件设置正确的 mime,header()因为您应该期望浏览器在猜测方面非常糟糕。
  5. 如果您的软件甚至会泄漏空格,您绝对需要使用die()exit()避免 Gecko (Firefox) 错误,因为浏览器会将其解释为可能导致损坏的文件的一部分。

这是 PHP 本身的代码:

$p = explode('/',strrev($_SERVER['REQUEST_URI']));
$file = strrev($p[0]);
header('HTTP/1.1 200');
header('Content-Type: '.$mime);
echo file_get_contents($path_absolute.$file);
die();
Run Code Online (Sandbox Code Playgroud)

为了计算下载量,如果您想花点心思,可以创建几个数据库表。一个用于文件 ( download_files),第二个表用于请求 ( download_requests)。加入基本的 SQL 查询,您就在收集数据。记录 IPv6(在 MySQL 中存储 IPv6 地址),您将能够从查询中辨别出您有多少独特的下载

回到人类访客:要了解人类和机器人之间的差异需要非常彻底的研究。像 Captcha 这样的东西是垃圾,非常烦人。您可以通过要求在请求时发回 cookie 来获得一个粗略的开始,尽管并非所有机器人都非常愚蠢。我希望这至少能让你走上正确的道路。