Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorBeezyT <timo@ezdesign.de>2012-10-20 10:51:03 +0400
committerBeezyT <timo@ezdesign.de>2012-10-20 10:51:03 +0400
commit984b9868ad73b0e86c4fb208bfd7682e4485765b (patch)
treed70d86c6ee0c98a934f56e70876c8749b6aab813 /js
parentf3514dbd33de6a0adbd220ff701052f72af06fce (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.js43
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