【问题标题】:Mod_pagespeed do not work for make_google_analytics_asyncMod_pagespeed 不适用于 make_google_analytics_async
【发布时间】:2015-08-29 07:59:43
【问题描述】:

这是我在 .htaccess 文件中的代码……我确信 mode_pagespeed 可以工作。

<IfModule pagespeed_module>
ModPagespeed on
ModPagespeedEnableFilters make_google_analytics_async
.
.
.
</IfModule>

在 html 中我添加了一个 java 脚本代码(我知道了 here

<html>
<head>

<script type='text/javascript'>
  var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  GLUE_SCRIPT
  var ga = document.createElement('script');
  ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
            'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(ga, s);
</script>
<script type="text/javascript">
  try {
    var pageTracker = _modpagespeed_getRewriteTracker("UA-63697801-1");
    pageTracker._trackPageview();
  } catch(err) {}
</script>
</head>
<body>

</body>
</html>

我怎么了?这是行不通的,但对于另一个过滤器insert_ga 有效,但未优化。

【问题讨论】:

    标签: .htaccess google-analytics mod-pagespeed


    【解决方案1】:

    您需要将GLUE_SCRIPT 替换为函数。来自Docs

    其中 GLUE_SCRIPT 是 JavaScript,它定义了 _modpagespeed_getRewriteTracker 函数以返回一个将同步 API 的所有方法映射到异步 API 的对象。

    如果您关注所提供链接下方的example,您可以看到完整的实现。

    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    var _gaq = _gaq || [];
    (function () {
        function functionName(fn) {
            var name = /\W*function\s+([\w\$]+)\(/.exec(fn);
            if (!name)
                return 'No name';
            return name[1];
        }
    
        var nameSpace = '_gat';
        var existingGat = window[nameSpace];
        if (existingGat && typeof existingGat['_getTracker'] == 'function') {
            return;
        }
    
        var gaqAccounts = [];
    
        function setAccount(acct, prefix) {
            if (gaqAccounts[prefix] != acct) {
                gaqAccounts[prefix] = acct;
                _gaq.push([prefix + '_setAccount', acct]);
            }
        }
    
        window['_modpagespeed_getRewriteTracker'] = function (tracker_acct,
                                                              tracker_name) {
            var prefix = tracker_name ? tracker_name + '.' : '';
    
            function deferTrackerFunc(fn) {
                return function () {
                    setAccount(tracker_acct, prefix);
                    var pushArgs = [fn];
                    [].push.apply(pushArgs, arguments);
                    _gaq.push(pushArgs);
                };
            }
    
            var pageTrackerMethodNames = [
                '_trackPageview',
                '_trackEvent',
                '_trackTrans',
                '_addIgnoredOrganic',
                '_addIgnoredRef',
                '_addItem',
                '_addOrganic',
                '_addTrans',
                '_clearIgnoredOrganic',
                '_clearIgnoredRef',
                '_clearOrganic',
                '_clearXKey',
                '_clearXValue',
                '_cookiePathCopy',
                '_deleteCustomVar',
                '_link',
                '_linkByPost',
                '_sendXEvent',
                '_setAllowAnchor',
                '_setAllowHash',
                '_setAllowLinker',
                '_setAutoTrackOutbound',
                '_setCampCIdKey',
                '_setCampContentKey',
                '_setCampIdKey',
                '_setCampMediumKey',
                '_setCampNOKey',
                '_setCampNameKey',
                '_setCampSourceKey',
                '_setCampTermKey',
                '_setCampaignCookieTimeout',
                '_setCampaignTrack',
                '_setClientInfo',
                '_setCookiePath',
                '_setCookiePersistence',
                '_setCookieTimeout',
                '_setCustomVar',
                '_setDetectFlash',
                '_setDetectTitle',
                '_setDomainName',
                '_setHrefExamineLimit',
                '_setLocalGifPath',
                '_setLocalRemoteServerMode',
                '_setLocalServerMode',
                '_setMaxCustomVariables',
                '_setNamespace',
                '_setReferrerOverride',
                '_setRemoteServerMode',
                '_setSampleRate',
                '_setSessionCookieTimeout',
                '_setSessionTimeout',
                '_setTrackOutboundSubdomains',
                '_setTrans',
                '_setTransactionDelim',
                '_setVar',
                '_setVisitorCookieTimeout',
                '_setXKey',
                '_setXValue'
            ];
            var pageTracker = {
                _initData: function () {
                },
            };
            for (var i = pageTrackerMethodNames.length; i--;) {
                var n = pageTrackerMethodNames[i];
                pageTracker[n] = deferTrackerFunc(prefix + n);
            }
            return pageTracker;
        };
    
        var ga = document.createElement('script');
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
                'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
    })();
    try {
        var pageTracker = _modpagespeed_getRewriteTracker("UA-xxxx-9");
        pageTracker._trackPageview();
    } catch (err) {
    }
    

    【讨论】:

      猜你喜欢
      • 2017-09-15
      • 2015-09-09
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      相关资源
      最近更新 更多