Ladezeiten meiner Websites zu lang durch die Matomo-Script-Ausführung?

Zurzeit bin ich dabei, meine Joomla-Websites zu überarbeiten / optimieren. Dabei fiel mir auf, dass die Ausführung der Matomo-Scripte rund 0,6 Sekunden in Anspruch nimmt und so die Ladezeit einer durchschnittlichen Webpage auf ca. 1,3 Sekunden kommt. Dies ist sowohl betr. SEO als auch für die Besucher ungünstig.

Eine Ursache ist sicher, dass ich sowohl das Betreten als auch das Verlassen der besuchten Page von Matomo registrieren lasse, wodurch zwei mal je Page das Matomo-Script abgearbeitet werden muss.

Jeder Matomo Script-Aufruf benötigt rund 270ms bis 320ms.
Frage: Ist das normal?

Nun sehe ich in Firefox unter der Netzwerkanalyse, dass das Matomo-Script zu Beginn des Ladens der Webseite und dann noch mal zum Ende des Ladens abgearbeitet wird.
Frage: Könnte es sein, dass Google die zweite Script-Ladezeit gar nicht bewertet, da ja der eigentliche Seiten-Inhalt bereits längst fertig geladen wurde und dass daher diese zweite Script-Ladezeit gar nicht schädlich ist für das SEO?

Frage: Insgesamt gesehen… was könnte ich noch tun, um im Zusammenhang mit Matomo die Ladezeit der einzelnene Seiten zu reduzieren?

Zur serverseitigen Konfiguration:
Ich habe bei webgo.de einen Webspace (Shared Hosting) gemietet, auf dem ich mit mehreren separaten Datenbanken mehrere Websites usw. betreiben kann. Die Nachbarn auf dem Shared Space beeinträchtigen die Leistungsfähigkeit meines Space nicht, da sie keine datenintensive Angebote bereit halten.
Meine Joomla Websites sowie die Matomo-Installation befinden sich auf gegenseitig abgeschotteten Userbereichen und jede Installation hat ihre eigene Datenbank.

Mein Dank und Anerkennung an PIWIK / MATOMO: Seit ich es begonnen habe zu nutzen, möchte ich nicht mehr darauf verzichten! Es lief (von einem Update abgesehen) immer zuverlässig.

Meine Aufrufe liegen hier im Bereich von 35-50ms :wink:
Es gibt so viele Hebel in der Ladezeit. Dazu müsste ich aber die Webseite wissen. Gerne auch per PN.

Google wertet ja die Ladezeit etwas anders und spricht hier auch eher von Web-Vitals. Also nicht nur wie lange die Seite lädt, sondern auch die Zeit bis man z.B. mit der Seite interagieren kann.

Über Chrome kannst du Lighthouse-Reports erstellen.
Hier gibt es meist schon gut Hinweise - auch in Hinblick auf Accessibility.

Für Performance-Auswertungen empfehle ich die Tools
https://developers.google.com/speed/pagespeed/insights/?hl=de
und
https://www.webpagetest.org/

Die größten Hebel sind:

  • Umstellung auf HTTP2
  • Bilderkomprimierung
  • Caching-Methoden

500ms sind meiner Ansicht nach vollkommen in Ordnung. Es sollte ja nicht snychron laden.

Es kann durchaus sein das es serverseitig “vom Anbieter” schon Engpässe gibt und dadurch allgemein dein Inhalt langsam ausgeliefert wird.
Wie sieht den das “Wasserfalldiagramm” des geladenen Inhalts aus?

Nutzt du den Matomo Tag Manager?
Wenn ja, welche Tags sind darin eingebaut, externe Scripte, Re-Marketing und Social Plugins machen generell die Seite langsam.

Du kannst ja deine Seite einmal hier durch laufen lassen:

Evtl. bringt es eine Erkenntnis.

Und noch etwas zur Wahrnehmung von 1,3 Sekunden.
Sofern ein Nutzer Inhalt geladen bekommt und die Seite schon Text usw. angezeigt sind 1,3 Sekunden kein Problem.

Hier findest du mehr dazu.
Laut dieser Quelle haben auch die Top 10 Google Suchergebnisse einen Mittelwert von 1.65 Sekunden.

Hallo,

Es könnte auf jeden Fall schneller sein, aber es ist jetzt auch nicht ungewöhnlich langsam.

Wenn dich der Teil wirklich stört, dann kannst du https://plugins.matomo.org/QueuedTracking ausprobieren. Dabei wird im matomo.php request nur die rohen Daten in Redis oder MySQL gespeichert und dann später verarbeitet. Damit sollte man leicht auf die ca. 50ms kommen.

Die Besucher müssen ja nicht warten, bis Matomo fertig ist um die Webseite zu benutzen. Im Gegenteil: Matomo sollte erst anfangen zu laden nachdem die Webseite für den Besucher “fertig” aussieht.

Google Lighthouse ist auf jeden Fall eine sehr schöne Übersicht.

Zu den 1.3s würde ich mal sagen, dass man vermutlich versuchen sollte doch unter 1s zu bleiben. Ich persönlich mag es sehr, wenn Klicks auf Webseiten sich instantan anfühlen. (Eine meiner Webseiten braucht 500ms ohne Cache und 150ms mit Cache zum Laden, womit man an die 100ms, unter denen eine Benutzeraktion sich halbwegs “sofort” anfühlt, recht nahe kommt) Aber das kommt natürlich auch auf die Art des Inhaltes an. Große Bildergalerien brauchen nun mal mehr Datenvolumen und über 3G ist man dann halt limitert.

Das finde ich seltsam: Verwendest du den normalen Tracking code? Hast du ihn versehentlich zweimal eingebunden. Es sollte immer nur eine Anfrage an matomo.js geben und anschließend die Daten an matomo.php

Eine dieser Websites ist: https://lebenslust-jetzt.de

Da ich den HTML-Output stark komprimiert habe, ist es hier sicher hilfreich, wenn ich den Matomo-Aufruf innerhalb der Website hier “zitiere”:

<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(['disableCookies']);
  _paq.push(['enableHeartBeatTimer']);
  _paq.push(['trackPageView']);
//  _paq.push(['trackAllContentImpressions(checkOnScroll=false)']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytic.lebenslust-jetzt.de/";
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', 3]);
    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);
  })();
  window.onunload = trackUnloadPage;
   function trackUnloadPage()
   {
      _paq.push(['trackPageView','Verlassen']);
   }
</script>
<noscript><p><img src="https://analytic.lebenslust-jetzt.de/piwik.php?idsite=0" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->

@ Wildchild:
Danke für den LinkTipp. Das kannte ich noch nicht. Während ich hier zuhause meine Site mit ca. 1,2 bis 1,3 Sekunden laden kann (ich habe einen 230 MBit/s Kabelanschluss) zeigt mir Pingdom Tools für die gleiche Seite und einem Server in Frankfurt eine Ladezeit von nur 660ms. Wäre das wirklich so, würde ich hier kein Wort drüber verlieren.

PingdomTools zeigt, dass das Matomo-Script nur ein Mal aufgerufen wird und zwar am Ende des gesamten Ladevoirgang. Firefox zeigte mir aber in der Netzwerkanalyse, dass es einmal zu Beginn des Ladevorgangs und einmal am Ende des Ladevorgangs abgerufen wird.

Den Matomo-Tag-Manager nutze ich nicht und weiß nicht, was das ist.

Während Firefox zwei mal Werte von ca. 270ms bis über 300ms anzeigt, stellt PingdomTools für das Laden von piwik.js 92,4ms und für den PHP-Abruf piwik.php?action_name… 103,8 ms fest.

Queued Tracking kannte ich noch nicht. Habs jetzt gelesen. Bringt bei mir aber nichts, da ich pro Tag weniger als 100 Besucher habe, die durchschnittlich auch nur zwei bis drei Seiten abrufen.

Für meine Websites achte ich immer darauf, dass die Code-Kompression incl. GZIP sowie das Caching aktiviert sind. Und natürlich habe ich den Piwik / Matome-Code nur ein Mal in die Seite eingebunden.

Mehr kann ich erst morgen untersuchen. Bin einfach zu müde jetzt. :-))

Hallo,

Es fällt mir auch auf der Webseite nichts Ungewöhnliches auf. Das einzige, was man vielleicht noch als langsam bezeichnen kann ist der ursprüngliche HTML/PHP-Request. Der dauert bei mir doch meist über 100ms und hält damit den Rest etwas auf, da alles andere erst zu laden beginnen kann, wenn das HTML da ist.

Aber auch so ist die Seite nicht negativ langsam.

Das ist auf jeden Fall der Grund für den ersten Matomo request. Ich würde ehrlich gesagt stattdessen eher den heartbeat timer empfehlen um die Besucherdauer zu messen (https://matomo.org/faq/how-to/faq_21824/). Der sendet auch beim Verlassen der Seite, ist aber besser in Matomo integriert.

Meiner Meinung nach bringt entfernen von Leerzeichen/Newlines in HTML nur ziemlich wenig, da das ein wiederkehrendes Muster ist und daher von gzip sehr gut komprimiert und es nervt dafür immer ein wenig, wenn man einen Fehler sucht.


Wenn man wirklich pedantisch sein will, könnte man anmerken, dass die Webseite sieben Schriftarten lädt und über 200kb an Javascript (komprimiert) lädt, während so manche komplette Single Page Application in unter 100kb passt.

Aber das ist auch nicht so arg wichtig.

Lieber Lukas! Herzlichen Dank sag ich dir für deine wertvollen Anregungen.
HeartBeat hatte ich bereits im Code, jedoch keine Zeit definiert, daher evtl. unwirksam. Auf jeden Fall aber doppelt gemoppelt, wenn ich “Verlassen” zugleich aktiviere. Das hab ich jetzt korrigiert.

Und mit dem Tipp betr. der Fonts hast du mir geholfen, einen gar nicht verwendeten Font aus dem CSS heraus zu nehmen.

Betr. der JS-Menge: Ja, die genannte Website ist sehr alt und ich hab viel nachträglich dran gebastelt. Deshalb arbeite ich auch gerade an einer neuen, die trotz Bildern auf der Homepage mit der Hälfte des Datenvolumen auskommt.

Erstaunlich ist, dass trotz dieser Änderungen die Ladezeit sich nicht wesentlich verringert hat.

Also das ist ja jetzt nicht gaaaaanz schlecht.

Wenn man was verbessern kann, dann das Rendering.

Schau dir dazu vielleicht mal https://www.sitelocity.com/critical-path-css-generator an. Das finde ich eigentlich sehr gut.