Zum Inhalt springen

Webseite tunen – Google Pagespeed über 90 Punkte

    Die Geschwindigkeit, wie lange es dauert, eine Webseite aufzurufen ist nicht nur für die Nutzererfahrung wichtig. Auch das Ranking in Suchmaschinen kann dadurch beeinflusst werden.
    Suchmaschinen möchte ihre Nutzer natürlich auch lieber an schnelle und gut funktionierende Webseiten schicken, als an lahme Krücken.

    Und Besucher kommen auch eher freiwillig wieder, wenn die Webseite schnell und zuverlässig funktioniert.

    Wenn Sie zum Beispiel ein Forum Betreiben, dann möchte kein Besucher bei jedem Klick Sekunden (gefühlte Ewigkeit) warten müssen, bis die nächste Seite aufgeht.

    Google hat für das Messen der Geschwindigkeit des Aufbaus einer Webseite ein Tool.
    Den Pagespeed Checker.

    Der Traumwert jedes Webseitenbetreibers ist natürlich in den Grünen Bereich zwischen 90 und 100 zu kommen.
    Der Pagespeed Checker unterscheidet bei dem Test zwischen Mobile Gerät und Desktop (Also PC/Laptop).

    Der Mobile Test ist meist niedriger, als der vom Desktop.
    Das liegt daran, dass beim Mobil Test, ein Mittelklasse-Mobiltelefon mit Mobilfunk Geschwindigkeit simuliert wird.
    Ein Smartphone hat nicht so viel Rechenleistung wie ein PC und die Internetgeschwindigkeit ist oft auch langsame als eine Standleitung zu Hause oder im Büro.

    Das hier sind die Werte die meine Webseite erreicht

    Mobil:

    Desktop:

    100 hab ich selbst noch nie erreicht. Das geht wohl mit einer einfachen statischen Webseite, die nur Text enthält.
    Mit WordPress, das im Hintergrund Daten aus eine Datenbank lädt und jede Menge CSS und Javascript Code beinhaltet, wird das schon schwieriger.

    Diese Werte erreicht man auch nicht ohne Cache Plugins und anderem Feintuning.

    Ohne Caching mit WordPress-Plugins und Apache Caching, hatte ich eher so um die 45 erreicht.

    Aber wie komme ich mit dieser Webseite auf solche Werte.
    Zunächst, diese Webseite läuft auf einem physischen Server in einem Rechenzentrum in Deutschland.
    Der Server hat einen AMD Ryzen 5 3600 Prozessor, 64 GB DDR4 RAM und eine NVMe SSD Festplatte.
    Und diese Hardware steht nur mir zur Verfügung. Der Server wir mit niemand anderen geteilt.
    Es laufen schon noch anderen Webseiten und Mailserver Dienste darauf. Aber dafür hat er mehr als genug Ressourcen.

    Also, wenn man seine Webseite bei einem Hoster betreibt und dafür 4 Euro im Monate bezahlt, wird man evtl. diese Werte nicht erreichen können, weil diese Server von den Hosting Providern viele Webseiten hosten und man sich die Ressourcen mit den andern teilen muss.
    Oft sind diese Server auch noch virtualisiert.

    Mit virtuellen Root Server habe ich gute und weniger gute Erfahrungen gemacht. Virtuelle Server laufen auf physischen Servern. Auch hier müssen sich die virtuellen Server die Ressourcen des physischen Servers teilen. Da kann es auch zu Lastspitzen und CPU, Speicher oder I/O Engpässen auf den Disken kommen.
    Ich hatte flotte virtuelle Server, aber mit langsamer Internetanbindung und vServer mit schnellem Internet aber immer wieder Probleme mit der Auslastung.

    Zurück zu meinem Pagespeed Ergebnis

    Um das zu erreichen, musste ich die WordPress-Plugins
    Jetpack von WordPress.com
    WP Super Cache
    Autoptimize
    installieren und den Apache Disk Cache aktivieren (Ob das bei dem jeweiligen Hosting Anbieter möglich ist, muss man evtl. anfragen)

    In Jetpack (Man muss sich dafür bei WordPress.com anmelden) nutze ich diese Einstellung:

    Jetpack Einstellung

    Die ist eine Art CDN (Content Delivery Network). Das bedeutet, das Bilder und statische Seiten auf den Servern von WordPress.com rund um die Welt gehostet werden können. Dadurch sind diese Seiten auch aus anderen Ländern schneller abrufbar. Ein Besucher aus z.B. Australien lädt diese Seite dann nicht vom Server in Deutschland, sondern von einem WordPress.com Server, der in Australien steht.

    Das WP Super Cache Plugin hat folgenden Einstellungen:

    Und Autoptimize folgende:

    Wer seinen Apache Webserver selbst betreibt, kann noch das Disk Cache Modul aktivieren.
    Befehl: a2enmod cache_disk

    Aber Achtung. Damit WordPress mit dem Apache Cache richtig funktioniert, muss in der .htaccess Datei von WordPress folgendes geändert werden.

    #RewriteRule . /index.php [L]
    RewriteRule ^(.*)$ /index.php/$1 [L]

    Wenn man das nicht ändert, wird man ein „wirres“ Verhalten feststellen. Die Startseite ist plötzlich irgendein Blogeintrag usw.

    Die Apache Disk Cache Konfiguration

    Das mod_cache bzw. mod_cache_disk Modul ist bei mir so konfiguriert:

    /etc/apache2/mods-enabled/cache_disk.conf

    <IfModule mod_cache.c>
        CacheQuickHandler Off
    
        CacheHeader Off
        CacheDetailHeader Off
    
        CacheIgnoreNoLastMod On
        CacheDefaultExpire 180
        CacheMinExpire 5
        CacheStoreExpired Off
        CacheLastModifiedFactor 0.5
    
        CacheIgnoreCacheControl On
        CacheIgnoreHeaders Set-Cookie Cookie
        CacheLock on
        CacheLockMaxAge 5
        CacheDisable /wp-admin
        CacheDisable /wp-content
        CacheDisable /wp-login.php
        CacheDisable /wp-cron.php
    
        SetOutputFilter CACHE
        AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/rss+xml text/xml image/svg+xml
    <IfModule mod_cache_disk.c>
        CacheRoot /var/cache/apache2/mod_cache_disk
        CacheEnable disk /
        CacheDirLevels 2
        CacheDirLength 1
        CacheMaxFileSize 20000000
    </IfModule>
    </IfModule>

    Mit diesen Einstellungen sollte der PageSpeed Test deutlich bessere Werte liefern.

    Nachwort

    Der „Mobil“ Wert kann aber bei jedem Test stark variieren.
    Der „Desktop“ Test schwankt nicht so stark zwischen den Tests.

    Ergänzung: Apache Benchmark

    Hier noch ab (Apache Benchmark) Tests:

    Ergebnis mit WordPress Cache und Apache Disk Cache:

    ab -k -n 1000 -c 10 "https://hummel-web.at/"
    
    This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking hummel-web.at (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Completed 600 requests
    Completed 700 requests
    Completed 800 requests
    Completed 900 requests
    Completed 1000 requests
    Finished 1000 requests
    
    
    Server Software:        Apache
    Server Hostname:        hummel-web.at
    Server Port:            443
    SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
    Server Temp Key:        X25519 253 bits
    TLS Server Name:        hummel-web.at
    
    Document Path:          /
    Document Length:        45081 bytes
    
    Concurrency Level:      10
    Time taken for tests:   0.125 seconds
    Complete requests:      1000
    Failed requests:        0
    Keep-Alive requests:    998
    Total transferred:      45574227 bytes
    HTML transferred:       45081000 bytes
    Requests per second:    7977.41 [#/sec] (mean)
    Time per request:       1.254 [ms] (mean)
    Time per request:       0.125 [ms] (mean, across all concurrent requests)
    Transfer rate:          355043.17 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.6      0       8
    Processing:     0    1   1.1      1       9
    Waiting:        0    1   1.1      1       9
    Total:          0    1   1.3      1       9
    
    Percentage of the requests served within a certain time (ms)
      50%      1
      66%      1
      75%      1
      80%      2
      90%      2
      95%      4
      98%      5
      99%      8
     100%      9 (longest request)

    Test nur mit WordPress Cache:

    ab -k -n 1000 -c 10 "https://hummel-web.at/"
    This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking hummel-web.at (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Completed 600 requests
    Completed 700 requests
    Completed 800 requests
    Completed 900 requests
    Completed 1000 requests
    Finished 1000 requests
    
    
    Server Software:        Apache
    Server Hostname:        hummel-web.at
    Server Port:            443
    SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
    Server Temp Key:        X25519 253 bits
    TLS Server Name:        hummel-web.at
    
    Document Path:          /
    Document Length:        45081 bytes
    
    Concurrency Level:      10
    Time taken for tests:   7.558 seconds
    Complete requests:      1000
    Failed requests:        0
    Keep-Alive requests:    996
    Total transferred:      45729227 bytes
    HTML transferred:       45081000 bytes
    Requests per second:    132.32 [#/sec] (mean)
    Time per request:       75.575 [ms] (mean)
    Time per request:       7.558 [ms] (mean, across all concurrent requests)
    Transfer rate:          5909.01 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0    0   0.7      0      12
    Processing:    51   74  17.4     67     173
    Waiting:       49   71  16.6     64     162
    Total:         51   74  17.4     67     175
    
    Percentage of the requests served within a certain time (ms)
      50%     67
      66%     72
      75%     78
      80%     83
      90%    100
      95%    114
      98%    125
      99%    134
     100%    175 (longest request)

    Test ohne Caching:

    ab -k -n 1000 -c 10 "https://hummel-web.at/"
    This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking hummel-web.at (be patient)
    Completed 100 requests
    Completed 200 requests
    Completed 300 requests
    Completed 400 requests
    Completed 500 requests
    Completed 600 requests
    Completed 700 requests
    Completed 800 requests
    Completed 900 requests
    Completed 1000 requests
    Finished 1000 requests
    
    
    Server Software:        Apache
    Server Hostname:        hummel-web.at
    Server Port:            443
    SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
    Server Temp Key:        X25519 253 bits
    TLS Server Name:        hummel-web.at
    
    Document Path:          /
    Document Length:        93257 bytes
    
    Concurrency Level:      10
    Time taken for tests:   10.994 seconds
    Complete requests:      1000
    Failed requests:        0
    Keep-Alive requests:    0
    Total transferred:      94020000 bytes
    HTML transferred:       93257000 bytes
    Requests per second:    90.96 [#/sec] (mean)
    Time per request:       109.936 [ms] (mean)
    Time per request:       10.994 [ms] (mean, across all concurrent requests)
    Transfer rate:          8351.81 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        1    2   0.8      2      10
    Processing:    75  107  24.8     95     232
    Waiting:       73  104  24.3     92     229
    Total:         77  109  24.9     97     234
    
    Percentage of the requests served within a certain time (ms)
      50%     97
      66%    107
      75%    120
      80%    127
      90%    147
      95%    163
      98%    180
      99%    189
     100%    234 (longest request)

    Also man erkennt sehr gut, wie viel der Apache Disk Cache bringt.
    Der Cache von NGINX wird vermutlich sogar noch bessere Werte liefern.

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert