diff options
author | BeezyT <timo@ezdesign.de> | 2012-10-20 10:51:03 +0400 |
---|---|---|
committer | BeezyT <timo@ezdesign.de> | 2012-10-20 10:51:03 +0400 |
commit | 984b9868ad73b0e86c4fb208bfd7682e4485765b (patch) | |
tree | d70d86c6ee0c98a934f56e70876c8749b6aab813 /js | |
parent | f3514dbd33de6a0adbd220ff701052f72af06fce (diff) |
refs #2465 improved efficiency of insight tracker extension.
you can review piwik.js now, i don't plan to change it any more.
git-svn-id: http://dev.piwik.org/svn/trunk@7261 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'js')
-rw-r--r-- | js/piwik.js | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/js/piwik.js b/js/piwik.js index ca3156e9d6..11062d190e 100644 --- a/js/piwik.js +++ b/js/piwik.js @@ -910,30 +910,35 @@ var var windowName = 'Piwik_Insight'; var referrer = documentAlias.referrer; var testReferrer = configTrackerUrl; + // remove piwik.php from referrer testReferrer = testReferrer.substring(0, testReferrer.length - 9); + // remove protocol - if (testReferrer.substring(0, 7) == 'http://') { - testReferrer = testReferrer.substring(7, testReferrer.length); - } else { - testReferrer = testReferrer.substring(8, testReferrer.length); - } - // build referrer regex - var referrerRegExp = new RegExp('^(http|https)://' + testReferrer - + 'index\\.php\\?module=Insight&action=startInsightSession' - + '&idsite=([0-9]+)&period=([^&]+)&date=([^&]+)$'); + testReferrer.substring(testReferrer.substring(0, 7) == 'http://' ? 7 : 8, testReferrer.length); + referrer.substring(referrer.substring(0, 7) == 'http://' ? 7 : 8, referrer.length); - var match; - if (match = referrer.match(referrerRegExp)) { - // check idsite - var idsite = match[2]; - if (parseInt(idsite, 10) !== configTrackerSiteId) { - return false; + // do a basic match before checking with a regex because the regex is more expensive + // and would be used at every pageview otherwise + if (referrer.substring(0, testReferrer.length) == testReferrer) { + + // build referrer regex to extract parameters + var referrerRegExp = new RegExp('^' + testReferrer + + 'index\\.php\\?module=Insight&action=startInsightSession' + + '&idsite=([0-9]+)&period=([^&]+)&date=([^&]+)$'); + + var match; + if (match = referrer.match(referrerRegExp)) { + // check idsite + var idsite = match[1]; + if (parseInt(idsite, 10) !== configTrackerSiteId) { + return false; + } + // store insight session info in window name + var period = match[2]; + var date = match[3]; + window.name = windowName + '###' + period + '###' + date; } - // store insight session info in window name - var period = match[3]; - var date = match[4]; - window.name = windowName + '###' + period + '###' + date; } // retrieve and check data from window name |