diff --git a/core/Tracker/TrackerCodeGenerator.php b/core/Tracker/TrackerCodeGenerator.php
index ae1ef6d2e811c09f5919660da039df6ad0d3c23e..ffeea91b6a85ce2ff021333d102f04d445562c92 100644
--- a/core/Tracker/TrackerCodeGenerator.php
+++ b/core/Tracker/TrackerCodeGenerator.php
@@ -12,6 +12,7 @@ use Piwik\Common;
 use Piwik\Piwik;
 use Piwik\Plugins\CustomVariables\CustomVariables;
 use Piwik\Plugins\SitesManager\API as APISitesManager;
+use Piwik\View;
 
 /**
  * Generates the Javascript code to be inserted on every page of the website to track.
@@ -46,8 +47,7 @@ class TrackerCodeGenerator
         $disableCookies = false
     ) {
         // changes made to this code should be mirrored in plugins/CoreAdminHome/javascripts/jsTrackingGenerator.js var generateJsCode
-        $jsCode = file_get_contents(PIWIK_INCLUDE_PATH . "/plugins/Morpheus/templates/javascriptCode.tpl");
-        $jsCode = htmlentities($jsCode);
+
         if (substr($piwikUrl, 0, 4) !== 'http') {
             $piwikUrl = 'http://' . $piwikUrl;
         }
@@ -150,12 +150,6 @@ class TrackerCodeGenerator
          */
         Piwik::postEvent('Piwik.getJavascriptCode', array(&$codeImpl, $parameters));
 
-        if (!empty($codeImpl['loadAsync'])) {
-            $codeImpl['loadAsync'] = 'true';
-        } else {
-            $codeImpl['loadAsync'] = 'false';
-        }
-
         $setTrackerUrl = 'var u="' . $codeImpl['protocol'] . '{$piwikUrl}/";';
 
         if (!empty($codeImpl['httpsPiwikUrl'])) {
@@ -164,6 +158,12 @@ class TrackerCodeGenerator
         }
         $codeImpl = array('setTrackerUrl' => htmlentities($setTrackerUrl)) + $codeImpl;
 
+        $view = new View('@Morpheus/javascriptCode');
+        $view->disableCacheBuster();
+        $view->loadAsync = $codeImpl['loadAsync'];
+        $jsCode = $view->render();
+        $jsCode = htmlentities($jsCode);
+
         foreach ($codeImpl as $keyToReplace => $replaceWith) {
             $jsCode = str_replace('{$' . $keyToReplace . '}', $replaceWith, $jsCode);
         }
diff --git a/core/View.php b/core/View.php
index 0a2cbabb67a9bea507b7ca6a6dc33068227f0ef9..0c9b379a6741d8b0df095ddef48d9a25794057df 100644
--- a/core/View.php
+++ b/core/View.php
@@ -116,6 +116,7 @@ class View implements ViewInterface
     protected $templateVars = array();
     private $contentType = 'text/html; charset=utf-8';
     private $xFrameOptions = null;
+    private $enableCacheBuster = true;
 
     /**
      * Constructor.
@@ -145,6 +146,14 @@ class View implements ViewInterface
         }
     }
 
+    /**
+     * Disables the cache buster (adding of ?cb=...) to JavaScript and stylesheet files
+     */
+    public function disableCacheBuster()
+    {
+        $this->enableCacheBuster = false;
+    }
+
     /**
      * Returns the template filename.
      *
@@ -237,9 +246,8 @@ class View implements ViewInterface
             } else {
                 $cacheBuster = UIAssetCacheBuster::getInstance()->piwikVersionBasedCacheBuster();
             }
-
             $this->cacheBuster = $cacheBuster;
-            
+
             $this->loginModule = Piwik::getLoginPluginName();
 
             $user = APIUsersManager::getInstance()->getUser($this->userLogin);
@@ -260,6 +268,16 @@ class View implements ViewInterface
         return $this->renderTwigTemplate();
     }
 
+    /**
+     * @internal
+     * @ignore
+     * @return Twig_Environment
+     */
+    public function getTwig()
+    {
+        return $this->twig;
+    }
+
     protected function renderTwigTemplate()
     {
         try {
@@ -272,7 +290,9 @@ class View implements ViewInterface
             throw $ex;
         }
 
-        $output = $this->applyFilter_cacheBuster($output);
+        if ($this->enableCacheBuster) {
+            $output = $this->applyFilter_cacheBuster($output);
+        }
 
         $helper = new Theme;
         $output = $helper->rewriteAssetsPathToTheme($output);
diff --git a/plugins/Morpheus/templates/javascriptCode.tpl b/plugins/Morpheus/templates/javascriptCode.twig
similarity index 58%
rename from plugins/Morpheus/templates/javascriptCode.tpl
rename to plugins/Morpheus/templates/javascriptCode.twig
index 1a9ea321c18c246992e9c1c37f90e1508bc9a176..c18d850d345d988bf24a3e1731965e873f5dfeff 100644
--- a/plugins/Morpheus/templates/javascriptCode.tpl
+++ b/plugins/Morpheus/templates/javascriptCode.twig
@@ -7,9 +7,12 @@
     {$setTrackerUrl}
     {$optionsBeforeTrackerUrl}_paq.push(['setTrackerUrl', u+'piwik.php']);
     _paq.push(['setSiteId', '{$idSite}']);
-    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-    g.type='text/javascript'; g.async={$loadAsync}; g.defer={$loadAsync}; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
+    {% if loadAsync %}var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
+    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);{% endif %}
+
   })();
 </script>
+{% if not loadAsync %}<script type='text/javascript' src="{$protocol}{$piwikUrl}/piwik.js">
+{% endif %}
 <noscript><p><img src="{$protocol}{$piwikUrl}/piwik.php?idsite={$idSite}" style="border:0;" alt="" /></p></noscript>
 <!-- End Piwik Code -->
diff --git a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
index 06f4bb5916b2e92458113c5e85536608487917be..c8bce62d517200830163f3a45c93b07a22157315 100644
--- a/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
+++ b/tests/PHPUnit/Integration/Tracker/TrackerCodeGeneratorTest.php
@@ -152,6 +152,41 @@ class TrackerCodeGeneratorTest extends IntegrationTestCase
         $this->assertEquals($expected, $jsTag);
     }
 
+    /**
+     * Tests the generated JS code with options before tracker url
+     */
+    public function testJavascriptTrackingCode_loadSync()
+    {
+        $generator = new TrackerCodeGenerator();
+
+        Piwik::addAction('Piwik.getJavascriptCode', function (&$codeImpl) {
+            $codeImpl['loadAsync'] = false;
+        });
+
+        $jsTag = $generator->generate($idSite = 1, $piwikUrl = 'http://localhost/piwik',
+            $mergeSubdomains = true, $groupPageTitlesByDomain = true, $mergeAliasUrls = true);
+
+        $expected = "&lt;!-- Piwik --&gt;
+&lt;script type=&quot;text/javascript&quot;&gt;
+  var _paq = _paq || [];
+  _paq.push([\"setDocumentTitle\", document.domain + \"/\" + document.title]);
+  _paq.push(['trackPageView']);
+  _paq.push(['enableLinkTracking']);
+  (function() {
+    var u=&quot;//localhost/piwik/&quot;;
+    _paq.push(['setTrackerUrl', u+'piwik.php']);
+    _paq.push(['setSiteId', '1']);
+    
+  })();
+&lt;/script&gt;
+&lt;script type='text/javascript' src=&quot;//localhost/piwik/piwik.js&quot;&gt;
+&lt;noscript&gt;&lt;p&gt;&lt;img src=&quot;//localhost/piwik/piwik.php?idsite=1&quot; style=&quot;border:0;&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;&lt;/noscript&gt;
+&lt;!-- End Piwik Code --&gt;
+";
+
+        $this->assertEquals($expected, $jsTag);
+    }
+
     public function testStringsAreEscaped()
     {
         $generator = new TrackerCodeGenerator();