随机使用Boomerang.js

时间:2012-04-24 13:51:51

标签: javascript performance

我不应该使用boomerang

这样做
<script type="text/javascript">
        if (Math.random() < 0.005) {//one time in 200
            document.write(
                '<scr' + 'ipt src="/scripts/boomerang.js" type="text/javascript"></scr' + 'ipt>' +
                    '<scr' + 'ipt type="text/javascript">BOOMR.init({'+
                        'user_ip: "'+ '<%= Request.UserHostAddress %>' +'",'+
                        'site_domain: "' + '<%= //TODO from config%>' + '",' +
                        'beacon_url: "/Handlers/Boomerang.ashx",'+
                        'BW: {base_url: "/Resources/images/Boomerang/"}'
                    +'});</scr' + 'ipt>'
            );
        }
        else if (Math.random() < 0.1) {//one time in ten
            document.write(
                '<scr' + 'ipt src="/scripts/boomerang.js" type="text/javascript"></scr' + 'ipt>' +
                    '<scr' + 'ipt type="text/javascript">BOOMR.init({'+
                        'user_ip: "'+ '<%= Request.UserHostAddress %>' +'",'+
                        'site_domain: "' + '<%= //TODO from config%>' + '",' +
                        'beacon_url: "/Handlers/Boomerang.ashx",'+
                        'BW : { enabled : false }'+
                    '});</scr' + 'ipt>'
            );
        }
</script>

这会使返回的时间无效吗?

我们并不太关心使用多页方法获取结果:我们满足于仅接收来自时间api的结果。

2 个答案:

答案 0 :(得分:2)

为什么不在所有页面上都包含回旋镖,只根据您的采样率修改对init的调用?像这样:

<script src="/scripts/boomerang.js"></script>
<script>
    var rand=Math.random(), test="";
    if(rand < 0.05) {     // one time in 200
        test="BW";
    }
    else if(rand < 0.1) { // 19 times in 200
        test="NOBW";
    }
    if(test) {
        BOOMR.addVar({
            test: test
        }).init({
            user_ip: "<%= Request.UserHostAddress %>",
            site_domain: "<%= //TODO from config%>",
            beacon_url: "/Handlers/Boomerang.ashx",
            BW: {
                base_url: (test == "BW" ? "/Resources/images/Boomerang/" : ""),
                enabled:  (test == "NOBW" ? false : true)
            }
        });
    }
</script>

此脚本与您的版本之间的主要区别是添加了addVar({ test: test }),它告诉您的信标收集器使用了哪个版本。如果它有助于调试,您可能还想传递rand的值。

我已经测量了从单个linode盒为全球数百万用户加载回旋镖所花费的时间,中间加载时间为68毫秒(我们将浏览器缓存了7天的脚本)。我们也异步加载脚本,所以如果你发现boomerang本身会影响页面加载时间,你可能需要考虑这个问题。

答案 1 :(得分:0)

为什么不在@bluesmoon询问最好的随机化方法是什么......确定他不会咬人; - )