Javascript 计算点击次数的最有效方法

Javascript 计算点击次数的最有效方法,javascript,asp.net,sql,Javascript,Asp.net,Sql,我开始在一个网站上做一些广告,我正在努力决定跟踪业绩的最佳方式 具体来说, 计算点击次数最有效的方法是什么?我能想到的唯一方法是将广告链接到另一个页面,并将广告ID作为参数(例如adserver.aspx?ID=1234)。另一个页面将更新数据库并重定向到广告客户的链接。但是,必须为此加载单独的页面似乎效率低下。还有其他选择吗 而且,我可能需要知道一周内点击次数之类的信息。但是,存储一个单独的数据库行,每单击一次就有一个日期,这似乎太过分了。还有其他人做过这样的事吗?是否有必要为每周创建一个新行

我开始在一个网站上做一些广告,我正在努力决定跟踪业绩的最佳方式

具体来说,


  • 计算点击次数最有效的方法是什么?我能想到的唯一方法是将广告链接到另一个页面,并将广告ID作为参数(例如adserver.aspx?ID=1234)。另一个页面将更新数据库并重定向到广告客户的链接。但是,必须为此加载单独的页面似乎效率低下。还有其他选择吗

  • 而且,我可能需要知道一周内点击次数之类的信息。但是,存储一个单独的数据库行,每单击一次就有一个日期,这似乎太过分了。还有其他人做过这样的事吗?是否有必要为每周创建一个新行,并为该周发生的所有点击增加一个计数器


  • 任何提示都值得欣赏。

    我建议您的第一个解决方案是最好的选择,事实上,它是大多数类似系统(OpenX、Google AdSense等)采用的设计。此外,它可以帮助您更好地管理您的横幅,并防止您的网站泄漏搜索引擎蜘蛛

    至于性能,这只是一个拥有良好设计的问题,在典型的设计中,重定向脚本将相当轻量级,因此应该相当快地处理请求。值得一提的是,您可以执行数据库更新以减少重定向请求响应时间

    当然还有另一种选择:

    它是免费的,是一款非常好的软件,而不是你自己制作的旗帜服务脚本。OpenX可在此处找到:

    以下是您可以在自己的服务器上运行的开源版本:


    另一个选择是实施类似谷歌AdSense的东西,省去寻找广告商等的麻烦。谷歌还提供工具,允许您出售横幅空间,如果您没有活跃的广告商,则退回默认的AdSense横幅(OpenX也将这样做,并支持集成AdSense)(和其他广告商)你可以用JavaScript来做

    打开页面:

  • 将广告URL发送到客户端
  • 当用户单击广告时,使用JavaScript打开URL。或者,只需使用带有
    target=“\u blank”
    的锚点
  • 在日志中单击:

  • 无论哪种方式,都要将JavaScript函数挂接到ad click事件
  • 当用户点击广告时,使用AJAX调用web服务。然后web服务将记录点击
  • 这样,ad会尽快打开,然后浏览器会与服务器异步通信以进行日志记录

    问题是,如果用户单击广告,页面打开,然后web服务调用失败,会发生什么?如果您愿意,您可以先调用web服务,然后并且只有在调用成功时,才打开广告。从最终用户的角度来看,这可能不是最好的

    问题2:存储每次单击可为以后的报告提供最大的灵活性。如果您设置为每周报告,为什么不设置一个每周流程来生成所需的报告,然后清理数据?您甚至可以暂时跳过清理数据,直到空间或速度成为问题


    每周创建一个新行并为该周发生的所有单击增加一个计数器有意义吗?
    可能没有。一次只能有一个进程更新计数器,否则您将丢失数据。获取值然后更新计数器所必须发生的锁定可能会显著降低速度

    “必须为这个页面加载一个单独的页面似乎很低效。”这句话告诉我你的HTTP知识不符合标准。@ Jash:我会同意乔纳森。为什么要调用这个页面,等待服务器处理它,接收HTTP重定向(或类似的)。,请求新页面,等待服务器处理它…?基本上,您需要等待两次往返。使用JavaScript,您可以将其剪切为一次往返以显示页面,然后使用更轻的AJAX调用来记录单击。@Josh:感谢您发布一条评论,该评论对对话完全没有任何影响。事实上,这是一个公平的对话处理ASP.NET页面请求的开销……当然,如果您使用JavaScript,它在某些浏览器中可能根本不起作用。在这种情况下,您可能需要一个带有额外页面的回退机制。:)@Nelson:我想知道javascript,但我不是javascript专家,也不知道如何从运行客户端的东西到数据库。我必须更仔细地研究你的描述,并对此进行一点研究。是的,不是所有浏览器都支持可能是个问题。@Jonathan:顺便说一下,我检查了谷歌广告的功能,然后看起来他们确实有一个中间页面。我没有看到任何HTTP重定向头,但是他们在页面中有这样的头:
    var a=parent,b=parent.google,c=location;if(a!=window&&b){if(b.r){b.r=0;document.getElementById(“link”)。click();}}else{document.getElementById(“link”)。click()}
    您可以使用
    IHttpHandler
    而不是
    页面来轻松实现类似的功能@Nelson:很有趣--谢谢!另外,关于增加一周内所有点击的计数器,我不确定我最初是否清楚。我是说为任何给定的一周生成一个唯一的数字,当我得到点击时,增加v当前广告/周的值,或者如果是新的一周,则创建一个新行。我认为锁定或丢失数据不会有问题。@Jonathan:但是如何“增加当前广告/周的值”"?  那不是一排吗?所有的广告点击都会试图更新这一行。不确定对性能的影响,但我怀疑有一些。谢谢链接。我不知道有这么免费的东西。我需要花一点时间来研究这个问题。看看OpenX,它看起来像ba