用ControlJS优化阿里妈妈广告

长时间以来阿里妈妈的广告载入策略一直存在些问题,很多页面也因为阻塞式的广告载入而被拉低性能,影响用户体验。毕竟阿里妈妈广告的渲染依赖于诸多嵌套的document.write。ControlJS的目标就是解决js的阻塞式渲染,因此灵玉急不可耐想与同仁们共同去揭秘ControlJS……

Steve Souders在2010年12月份发布了ControlJS项目,该项目是让开发者更好的去控制javascript文件的下载和执行,从而提高了页面脚本的加载速度。

Steve提出了一个非常具有创造性的思想,就是预先异步下载javascript文件而不解析执行,直到需要的javascript处理时才去真正的执行。这一点得到了很多人的关注与验证。Nicholas Zaka也因ControlJS引发了很多思考,并分析了ControlJS和LABjs 的区别所在,详细内容可以阅读Thoughts on script loaders和Separating JavaScript download and execution。Steve使用3篇博闻详细介绍了ControlJS:异步加载、延迟执行、重写document.write。

  • ControlJS的原理

异步加载

ControlJS本身是异步进行加载的,首先将script的标签type属性值更改为浏览器无法识别的类型,这样浏览器不会认为这是一个脚本。本身异步加载的ControlJS执行时开始遍历type=”text/cjs”的script标签(包括内嵌脚本),如果存在”DATA-CJSSRC”属性将创建IMAGE或者OBJECT对象(依赖浏览器而选择),去异步预下载脚本文件并缓存文件,直到window.onload时解析并执行javascript,同时第二次去遍历遗漏的script标签。具体操作可看Async WITH ControlJS

延迟执行

浏览器在解析执行javascript阶段是阻塞任何操作的,这时的浏览器处于假死状态,Steve分析了美国的Alexa前10名网站的脚本初始需要加载执行情况,发现只有29%是需要页面加载时初始化解析执行的,而其他71%的脚本是在触发交互时才会执行,压缩后这些脚本平均加载是229 kB,未压缩是500KB,这是个大量的数据。

我们希望的结果是在页面加载中不去解析执行javascript,只是提前预下载好文件。例如通用的点击弹出二级导航,用户有可能永远都没有点击导航的行为,此时导航的功能脚本根本毫无用处。但是人们在点击导航时不希望等太久javascript的执行,所以ControlJS会提前下载文件,这样javascript只是解析执行,不会花时间放到下载文件上。代码一目了然,具体操作可看Menu WITH ControlJS

重写document.write

在默认情况下这些异步脚本都是在window.onload解析执行,如果此时脚本调用window.write方法,将导致一个不希望发生的问题,就是整个页面被window.write的输出内容替换,所有页面内容将被删除,ie下将处于停滞状态。产生问题的原因是由于在document被加载完后调用docuemnt.write方法时将会自动去触发document.open,写入任何处于打开状态的doucment都将会会替换整个页面的内容。这便导致目前为止所有异步脚本无法延迟document.write的问题,ControlJS的处理方法是重写document.write,如下:

CJS.docwriteOrig = document.write;
document.write = CJS.docwrite;

ControlJS创建一个dom元素(span),将其插入当前被解析执行的script标签之前,并且设置SPAN的innerHTML的值为docuemnt.write的内容。具体操作可看document.write WITH ControlJS

  • 用ControlJS优化阿里妈妈广告

对于现在大部分的广告形式都是采用document.write方式写入,无法将这些内容异步处理是开发者非常头疼的问题。ControlJS可以为我们解决这类烦恼。


没有应用ControlJS的网络图。DEMO可以看http://chesihui.github.com/ad-demo.html


应用ControlJS优化后的网络图。DEMO可以看http://chesihui.github.com/ControlJS-demo.html

  • ControlJS的局限性

ControlJS存在一个问题是在document.write中多层嵌套script标签时,页面仍然存在触发document.open的问题。查看源代码发现在执行完一个javascript后都会恢复document.write的原生方法:

document.write = CJS.docwriteOrig;

动态脚本的异步加载,同样使得document.write方法也是异步执行,因此不能恢复document.write的原生功能。复现的情况如DEMO。注释这段脚本虽然解决了不触发window.open的问题,但是同样的异步加载执行导致无法正确定位广告写入的位置。对于阿里妈妈广告设置alimama_type=”i”的时候,载入图片广告是根据多层document.write实现的,只能正确渲染最后一个图片广告。复现如DEMO。

因为ControlJS的异步加载不存在任何依赖顺序,所有脚本都是并行加载执行,如果你的页面存在太多依赖关系,ControlJS将不会适合你的项目。

最后总结ControlJS为我们做了什么事,利弊还需要自己去权衡:
1、异步下载所有脚本
2、同时处理内嵌与外链脚本
3、延迟脚本的执行直到页面被渲染完
4、允许脚本只下载不执行
5、解决了异步脚本中存在document.write的问题
6、ControlJS本身是异步加载

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, 脚本
, 页面
, 广告
, 异步加载
, document
, write
, 无法write
, 浏览器延迟 渲染
, 异步加载图片
, 异步载入
, doucment
, 脚本加载
同时加载执行
阿里汇川广告如何优化、阿里妈妈广告牌生成器、阿里妈妈广告联盟、阿里妈妈广告、阿里妈妈广告平台,以便于您获取更多的相关知识。

时间: 2024-10-07 08:43:52

用ControlJS优化阿里妈妈广告的相关文章

ControlJS优化阿里妈妈广告提高页面脚本的加载速度

文章简介:用ControlJS优化阿里妈妈广告. 长时间以来阿里妈妈的广告载入策略一直存在些问题,很多页面也因为阻塞式的广告载入而被拉低性能,影响用户体验.毕竟阿里妈妈广告的渲染依赖于诸多嵌套的document.write.ControlJS的目标就是解决js的阻塞式渲染,因此灵玉急不可耐想与同仁们共同去揭秘ControlJS-- Steve Souders在2010年12月份发布了ControlJS项目,该项目是让开发者更好的去控制javascript文件的下载和执行,从而提高了页面脚本的加载

对待阿里妈妈广告联盟要理性和客观

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近看到一些站长的文章,大意说阿里妈妈是一个很差的广告联盟,现在还在上面做广告的网站都是些垃圾站点,要么就是刷出来的流量.一般来说,从站长 的角度来判断一个广告联盟的好坏,大致是从以下几个方面来参考:1.价格收入;2.扣量情况;3.广告匹配;4.载入速度.根据这四点来说,很难断言说阿 里妈妈广告联盟是一个很差的广告联盟.当然,本文所讨论的阿里

阿里妈妈广告投放鉴别虚假流量的5种方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 很多人知道阿里妈妈是通过做淘宝客的项目,其实阿里妈妈还是一个广告交易平台,他们同属于淘宝联盟,阿里妈妈建立了广告主与网站主之间的联系.假如你有一个网站,但没有广告收入,又不知道谁会来买你的广告,那么你可以发布一个广告位(放阿里妈妈的代码,按发布广告位提示一步一步操作).这样买广告的人在阿里妈妈上看到你的广告位如果觉得合适就会购买.如果你要推广

阿里妈妈广告商铺新功能与网站站长见面

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 2008年5月7日下午,阿里妈妈"广告商铺"新功能上线,同时全新的广告位详情页面也闪亮登场. 新上线的"广告商铺"界面风格,类似淘宝店铺,这也正符合阿里妈妈"广告即是商品"的理念."广告商铺"不仅将所有网站及其广告位以商品的形式全部展示出来,同时"

做阿里妈妈广告两年的一些经验

目前互联网广告联盟大致呈现三足鼎立的形式:GG ADSENSE,百度主题推广,http://www.aliyun.com/zixun/aggregation/7555.html">阿里妈妈,基本是这3个广告联盟.阿里妈妈和百度主题推广以及GG ADSENSE有很大区别,总的来说它是一个网站发布商发布广告位置,广告主选择广告位置投放广告的途径,相当于一个交换平台,自由度那是相当的大.下面是我投放阿里妈妈广告2年总结的一些心得,仅供参考. 在网站上同时投放这3个联盟的广告,个人认为最佳的应该是

1000IP站做阿里妈妈广告一月收入为零

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 本人小站是今年四月份建的,五月份IP超过1000最多的时候到3000IP,于是我开始做妈妈广告,想挣点钱好把域名空间钱挣够,业余吗,不可能用他来挣钱. 我是最高近3000IP的时候放得广告,可放了广告不久IP又回落到1000,流量大多是百度来的,又过了一段时间百度来的流量几本没得了,(说明一下我天天更新,没有采集.只不这我是做的QQ空间留言为

阿里妈妈广告效果评估分析

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 今天结束了网络营销学院课程里的第三本书<网络调研与网络广告>,明天开始又可以听杨帆老师讲SEO啦!通过上周四陈达琛老师的网络广告实训课程,学会了网络广告的基本投放流程和具体投放方法以及投放后的效果评估分析.课后我也给自己的Blog在阿里妈妈上投了3个广告,体验下阿里妈妈的广告效率. 以下是我的BLOG这3天流量详情,由51啦友情提

网赚心得:如何快速卖出阿里妈妈广告

当我发现将http://www.aliyun.com/zixun/aggregation/7555.html">阿里妈妈做成功的几条原则之后,就严格履行.广告位几天内全部卖出去,每隔几小时查看一下邮箱,就能收到阿里妈妈的邮件提示:XXX广告位成功售出. 我的站点 忽略 [这里藏龙啊,我顶不起,要不一会就被超越了] 那么如何将你的广告位在几天之内将本月的额度全部售光呢? 下面我将我的经验无私奉献个大家 原则一:让利于客户 大多数的网站主都想靠自己的广告位小赚一笔,没有多少流量的广告位就要好几

从阿里妈妈看互联网的广告市场前景

  最近有两件事情值得大家关注:一件是阿里妈妈的横空出世,另一件是美国互联网广告增长讯猛.  关于阿里妈妈的事情,很多朋友都评论过了,致于它与阿里爸爸是个什么关系,我就不在此八封了,不过无论从页面还是口号"天下没有难做的广告",还是操作风格,明确是非常"阿里"的.主要的定位一看就明了:互联网广场的B2B平台,其实说是B2B也不准确,因为网络广告除了几大门户以外,更多的是个人站长的天下,而几大门户们是好耶与互动通们的地盘,很明显阿里妈妈是不可能成为其广告的交易平台的,