Image beacon

转帖:http://www.denisdeng.com/?p=1143

 

不知道如何翻译它,只好直接用它作为标题。在《Hight Performance Javascript》一书中对此有过描述,详情可查看本书,这里只对此做一个简单描述。该技巧适用于以下场景:
只关注数据是否被发送到服务器,客户端对该请求是否做出响应无关紧要。
在对站点数据进行分析时,这种技巧正可大行其道。即:

var url = '/status_tracker.php';
var params = [
'step=2',
'time=1248027314'
];
(new Image()).src = url + '?' + params.join('&');

 同样,你可以监听Image的load事件来确定数据是否发送成功。

var url = '/status_tracker.php';
var params = [
'step=2',
'time=1248027314'
];
var beacon = new Image();
beacon.src = url + '?' + params.join('&');
beacon.onload = function() {
if (this.width == 1) {
// Success.
}
else if (this.width == 2) {
// Failure; create another beacon and try again.
}
};
beacon.onerror = function() {
// Error; wait a bit, then create another beacon and try again.
};
 

这种方法的局限性在于只能以get的方式提交数据,这样提交的数据也就有了字节限制。故在真正用到该技巧的时候,还是根据具体的功能需求酌情使用。

Minimize redirects一文中,在Track web traffic in the background一节中,你可以看到对该技巧类似的描述。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值