Javascript 计算网站上几个文件的下载次数的最佳方法

Javascript 计算网站上几个文件的下载次数的最佳方法,javascript,php,html,Javascript,Php,Html,问题是“计算网站上几个文件的下载次数的最佳方法” 我想做的是: 跟踪并统计几个文件的下载次数 对于具有不同扩展名的文件。(foo.zip、bar.tar.gz、foo2.zip) 避免依赖服务器端代码 我已经看到了使用apacheaccess.log计算文件下载量的多个答案 cat/path/to/access.log | grep foo.zip | grep 200 | wc-l 从…起 ,这是一个有说服力的解决方案,但是需要访问后端日志文件。我希望使用一个以javascript为主的解决方

问题是“计算网站上几个文件的下载次数的最佳方法”

我想做的是:

  • 跟踪并统计几个文件的下载次数
  • 对于具有不同扩展名的文件。(foo.zip、bar.tar.gz、foo2.zip)
  • 避免依赖服务器端代码
  • 我已经看到了使用apacheaccess.log计算文件下载量的多个答案
    cat/path/to/access.log | grep foo.zip | grep 200 | wc-l
    从…起
    ,这是一个有说服力的解决方案,但是需要访问后端日志文件。我希望使用一个以javascript为主的解决方案,它还可以调用php代码的一部分。

    你可以使用goo.gl或任何其他url缩短服务,创建下载链接,并获取链接的统计数据。

    为什么不使用谷歌分析

    如果你的网站已经启用了Google Analytics,你可以简单地在链接中添加一个onclick事件,允许它创建链接被点击时的计数

    对于您的示例,链接如下所示:

    <a onclick="var that=this;_gaq.push(['_trackEvent','Download','foo',this.href]);setTimeout(function(){location.href=that.href;},400);return false;" href="downloads/foo.zip">Download foo.zip</a>
    
    <a onclick="var that=this;_gaq.push(['_trackEvent','Download','bar',this.href]);setTimeout(function(){location.href=that.href;},400);return false;" href="downloads/bar.tar.gz">Download foo.zip</a>
    
    <a onclick="var that=this;_gaq.push(['_trackEvent','Download','foo2',this.href]);setTimeout(function(){location.href=that.href;},400);return false;" href="downloads/foo2.zip">Download foo.zip</a>
    
    
    
    在Google Analytics中,“下载”事件是所有三个文件的下载总数,每个文件都有自己的事件“foo,bar,foo2”,这将是每个文件的单独下载计数


    如果希望从服务器端执行此操作,则需要在客户端中包含一些代码。使用现有的工具比使用php和javascript编写自己的解决方案更有效。

    您必须依赖服务器端代码。如果不接触服务器,您将无法逃脱惩罚。JS代码仅在客户端计算机上执行,不能信任它执行持久性任务。在任何情况下,您的JS都必须将数据报告到某个地方,而这很可能是一个服务器。(所有客户端-)javascript无法存储任何内容,因此您无法计算每个网站的数量,而只能让每个用户自己计算。我不是在寻找全客户端解决方案,我知道在某些时候需要调用后端来存储计数。这是一个很好的答案。好主意,我没想过要这么做。