【问题标题】:is it possible to make serverside ad requests instead of in-browser using a headless browser?是否可以使用无头浏览器而不是在浏览器中发出服务器端广告请求?
【发布时间】:2013-03-26 22:02:13
【问题描述】:

这个想法的动机是浏览器的广告请求通常非常缓慢并且会阻塞页面呈现,更不用说消耗浏览器的 javascript 线程了。如果一个页面加载了多个广告,那就是很多不可靠的,会阻止第三方调用。通过使用事件驱动的无头服务器端浏览器,是否可以发出这些请求并将广告资源一次性传递给浏览器?特别是,这是否适用于 doubleclick,其广告网络经常发出一系列请求,即 document.write 脚本标记,然后获取更多脚本,可能会加载一个 flash swf,然后请求一些额外的 gif?听起来有点多,但广告是魔鬼,如果可以从客户端卸载,它将极大地提高站点速度,因为服务器解决方案可以发出广告请求并并行处理 javascript。

编辑:回复@dthorpe:

要考虑的所有优点。

就广告投放延迟而言,服务器端解决方案应该会有所帮助,原因如下:

首先,可以同时发出多个广告请求。虽然有在浏览器中并行加载资源的方法,但我知道没有一个好的解决方案是完全非阻塞的(即在页面渲染和 onload 事件方面),除非你延迟加载所有广告。我正在寻找一种在加载页面其余部分的同时以非阻塞方式并行加载广告的方法。

其次,也许更重要的是,加载双击广告通常涉及加载多个中间脚本。浏览器中的 Javascript 是单线程的。这直接意味着我页面的 javascript 会阻止广告 javascript,从而减慢广告的展示速度。广告的 javascript 反过来会阻止我页面的 javascript,从而减慢我的页面速度。我可能会接到其他第三方电话,用于跟踪或其他目的。我在页面上还有多个广告,所有这些都有助于减慢页面渲染和 javascript 执行速度。通过将广告加载卸载到服务器,我页面的 javascript 将不会与广告竞争。广告造成的延迟将是一个广告(最长的一个)的函数,但一个广告的加载行为不会受到其他广告或我的页面的影响,因此理论上应该更快。

目标是将广告与基本页面分离,以使广告不会阻止页面呈现、页面加载事件或减慢页面或彼此的速度。只要浏览器中的javascript是单线程的,我不知道任何可以实现完美解除关联的客户端解决方案。虽然通过 javascript 实现了长时间加载的广告,但页面的其余部分必须等待。

我知道各种延迟加载机制,其中一些涉及 iframe,还有一些覆盖 document.write 以适应延迟加载,但这些都没有令人满意的结果,纯粹是由于干扰 javascript 执行的串行行为。

我想知道我是否可以在浏览器中使用 Java 小程序获得服务器端广告加载的好处,并避免您提到的 cookie/预加载情况?由于双击广告的严重退化,我实际上正在考虑这些不符合标准的方法。这些广告扼杀页面加载速度的方式是真正的可憎:)

【问题讨论】:

    标签: javascript double-click ads pagespeed


    【解决方案1】:

    为了准确地完全代表客户端计算机,您的无头服务器浏览器需要能够为广告网络域呈现驻留在客户端上的浏览器 cookie。这会很困难,因为您的服务器的域名不在广告网络域中,因此客户端浏览器不会为您提供广告网络 cookie。

    您可能可以在服务器浏览器中捕获广告以代表客户端“预加载”它们,但如果没有客户端的浏览器 cookie,您将缺乏广告网络严重依赖的连续性和跟踪。广告网络选择展示的广告将基于您的服务器浏览器代表客户查看的页面,而不是客户查看的页面。

    另外:如果加载广告内容是阻止在客户端浏览器中呈现页面的原因,那么在您的服务器上呈现相同的页面将如何加快速度?您的服务器浏览器将遭受与客户端浏览器相同的网络和脚本延迟,并且客户端仍将坐在那里等待“某事”,但在页面完全加载并已在服务器浏览器中处理之前不会显示任何内容,并且转发到客户端浏览器?将问题移到“上游”并不能解决任何问题。

    最后:即使您的意图可能是光荣的(以改善客户端浏览体验),广告网络很可能会认为您的服务器浏览器广告“预加载器”是可憎的,并且违反了他们的广告网络服务条款,因为它会干扰他们能够跟踪实际客户端的浏览活动。

    【讨论】:

    • 如何在服务器端呈现广告我必须遵循什么方法
    【解决方案2】:

    在客户端使用 java 插件可能会更加浪费客户端机器的资源,因为 Java 插件必须加载到浏览器中,这通常需要几秒钟的时间。

    请记住,Java 0-day 漏洞在野外经常出现 (http://java-0day.com/)。建议在所有 Web 浏览器中禁用 Java 插件。 Mac 现在默认禁用 Java 插件。此外,智能手机和平板电脑等移动设备上不存在 Java 插件。因此,您将无法向桌面浏览器以外的任何设备投放广告,并且可能只能在公司环境之外使用的桌面浏览器投放广告。

    如果延迟加载广告不可接受,您可能不得不接受 DoubleClick 的加载时间。从合同的角度来看,广告网络不会容忍这种干扰,如果您打算直接出售您的广告库存,您将在广告商试图投放流行的富媒体广告时遇到他们自己的阻力。 (视频、展开式广告、插页式广告等)

    您最终会花费更多的时间来尝试使您的广告模拟层完美地适应出现的每种新广告类型,而不是您从展示广告的每千费率中获得的金额。

    也许您应该重新考虑广告是否有意义,或者您的网站货币化业务模式是否需要调整。展示广告已成为商品市场,在您的时间构建此仿真层的成本似乎高于提高页面速度的好处,以及页面速度可能带来的略高的展示次数。

    感谢您关心最终用户,DoubleClick 广告请求可能会真正拖累页面加载时间。我希望有人能加入并提供一种以稳健可靠的方式延迟广告加载的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 2022-01-12
      • 2019-03-30
      相关资源
      最近更新 更多