【问题标题】:Is there anyway I could count the visitors for a specific file in the public folder?无论如何我可以计算公共文件夹中特定文件的访问者吗?
【发布时间】:2021-05-25 12:44:45
【问题描述】:

目前我正在使用 laravel,如您所知,有很多方法可以计算单个页面的访问者(路线上的点击量)。但我也想计算公共文件夹中的图像或 pdf 文件的访问者,有什么想法吗?

【问题讨论】:

    标签: laravel counter traffic visitor-pattern


    【解决方案1】:

    其中一种可能的方法是让路由返回 pdf/image 流。这样您就可以使用与页面相同的方法。它可以通过 $request->ip 或其他方式。缺点是,您必须重新制作页面上的所有图像/pdf 链接以重定向到路由而不是资产路径或您使用的任何内容。

    【讨论】:

      【解决方案2】:

      您需要使用应用程序中的代理 URL 绕过到文件位置的路由。然后使用代理 URL 提供文件以访问文件。

      例如:如果您有一个可在 yourdomain.com/public/some-file.pdf 访问的 pdf 文件,请为 yourdomain.com/proxy/some-file.pdf 之类的相同内容创建一个代理 URL。

      在您的路线文件中创建相应的路线。请注意,最后一部分是动态的,应该可以识别您的文件。

      Route::get('/proxy/{fileName}', [DefaultController::class, 'proxy'])
      

      在您的 DefaultController.php 文件中进行必要的计数记录,然后将您的原始文件作为响应。

      public function proxy($fileName) {
        ***your logic to increase visit count. db addition or something
        $pathToFile = Storage::path($fileName);
        return response()->file($pathToFile);
      }
      

      【讨论】:

      • 它仍然需要经过一条路线,无论如何我可以使用确切的网址“yourdomain.com/public/some-file.pdf”来计算访问者吗?我的意思是.. 如果有人通过搜索引擎找到 pdf 文件,它将跳过代理路由,应用程序不会计算它:(
      • 你不能直接从 laravel 做到这一点。由于文件由 apache 或 nginx 直接提供。我不是那方面的专家,但如果有办法,它应该只来自那方面。更好的选择是执行上述操作并防止提供绝对 URL。
      猜你喜欢
      • 2021-02-10
      • 2016-10-07
      • 2011-03-04
      • 2020-12-24
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多