这个想法的动机是浏览器的广告请求通常非常缓慢并且会阻塞页面渲染,更不用说消耗浏览器的 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/预加载情况?由于我们在双击广告中看到的严重退化,我实际上正在考虑这些不合格的方法。那些广告扼杀页面加载速度的方式是真正可憎的:)