Diese Anleitung befindet sich in Überarbeitung.
Hinweis:
In diesem Beitrag geht es um das Optimieren der Performance. Falls Sie herausfinden möchten warum Ihre Webseite viel Ressourcen verbraucht, lesen Sie unseren anderen FAQ-Beitrag.
Link zum Artikel: Was tun wenn meine Seite zu viele Ressourcen verbraucht
Ihr Account erreicht regelmässig das Ressourcenlimit oder Ihre Seite ist einfach nur Langsam? Mit ein paar wenigen Einstellungen lässt sich die der Account so optimieren, dass sich die Performance Ihrer Webseite stark erhöht. Folgend finden Sie mehrere Ansätze zur optimierung:
GZIP-Komprimierung
Als erstes sollten Sie die die GZIP-Komprimierung aktivieren. Das heisst, dass alle Daten die der Server sendet zuerst komprimiert werden. Somit wird die versendete Datenmenge stark reduziert und die Webseite lässt sich schneller laden.
Um die Komprimierung zu aktivieren, loggen Sie sich im cPanel ein und öffnen Sie das Menü " Optimize Website". Dort wählen Sie die Option "Compress all content". Anschliessend muss die Einstellung mit dem Button "Update Settings" noch gespeichert werden und schon wird Ihre Seite komprimiert ausgeliefert:
PHP-Optimierung
Um die PHP-Einstellungen zu optimieren, müssen Sie vom cPanel in das Menü "PHP-Version wählen" wechseln. Anschliessend, falls nicht bereits umgestellt, muss eine PHP-Version definiert werden.
Anschliessend sehen Sie eine Übersicht der aktivierten PHP-Erweiterungen. Speichern Sie die Einstellung via dem Button "Set as current".
PHP-Chaching
Wenn ein User Ihre webseite aufruft, wird jedes mal aus den PHP-Dateien ein HTML-Dokument erstellt. Wenn nun zur gleichen Zeit mehrere Benutzer auf der Webseite sind, kann das eine hohe Last verursachen, da der Server das HTML-Dokument jedes mal neu erstellt. Mit dem Aktivieren der Erweiterung "opcache" kann PHP die HTML-Dokumente zwischenspeichern, sodass die Last auf dem Server stark minimiert wird.
Um die PHP-Einstellungen zu optimieren, müssen Sie vom cPanel in das Menü "PHP-Version wählen" wechseln. Anschliessend den Haken bei "opcache" setzen und mit dem Button "Speichern" die gemachten Änderungen übernehmen:
Maximale Ausführzeit
Normalerweise werde PHP-Scripte in weniger als einer Sekunde ausgeführt. Falls etwas schiefläuft und das Script weiterläuft soll es anstatt nach 30 Sekunden bereits nach 10 beendet werden, da jedes einen Prozess benötigt. Damit nun das Prozesslimit nicht bzw. seltener erreicht wird, kann man folgende Einstellungen vornehmen:
Um die PHP-Einstellungen zu optimieren, müssen Sie vom cPanel in das Menü "PHP-Version wählen" wechseln und oben rechts auf "Switch To PHP Settings" klicken. Anschliessend änden Sie den Wert beim Eintrag "max_execution_time" auf 10. Somit wird ein PHP-Script nach 10s beendet:
CloudFlare CDN
CloudFlare aktivieren:
Um Cloudflare zu aktivieren, benötigen Sie einen Account bei Cloudflare. Bei der Einrichtung der Domain werden Ihnen dann DNS-Einträge angegeben, über welche Sie den Domainnamen mit Cloudflare verbinden können. Wir können hierfür keinen direkten Support anbieten.
Apache .htaccess Konfiguration
Der Apache-Server kann so konfiguriert werden, dass er dem Browser mitteilt statische Dateien (z.B. Bilder) auf dem Computer zu speichern und nicht jedes mal erneut herunterzuladen. Um diese Einstellungen zu aktivieren, fügen Sie folgende Konfiguration zur .htaccess Datei im Webseitenverzeichnis hinzu:
# ##############################################################################
# # WEB PERFORMANCE #
# ##############################################################################
# ------------------------------------------------------------------------------
# | Compression |
# ------------------------------------------------------------------------------
<IfModule mod_deflate.c>
# Force compression for mangled headers.
# https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Map certain file types to the specified encoding type in order to
# make Apache serve them with the appropriate 'Content-Encoding' HTTP
# response header (this will NOT make Apache compress them!).
# If the following file types wouldn't be served without the appropriate
# 'Content-Enable' HTTP response header, client applications (e.g.:
# browsers) wouldn't know that they first need to uncompress the response,
# and thus, wouldn't be able to understand the content.
# http://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding
<IfModule mod_mime.c>
AddEncoding gzip svgz
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Compress all output labeled with one of the following media types.
# IMPORTANT: For Apache versions below 2.3.7 you don't need to enable
# 'mod_filter' and can remove the '<IfModule mod_filter.c>' & '</IfModule>'
# lines as 'AddOutputFilterByType' is still in the core directives.
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE "application/atom+xml" \
"application/javascript" \
"application/json" \
"application/ld+json" \
"application/manifest+json" \
"application/rdf+xml" \
"application/rss+xml" \
"application/schema+json" \
"application/vnd.geo+json" \
"application/vnd.ms-fontobject" \
"application/x-font-ttf" \
"application/x-web-app-manifest+json" \
"application/xhtml+xml" \
"application/xml" \
"font/opentype" \
"image/svg+xml" \
"image/x-icon" \
"text/cache-manifest" \
"text/css" \
"text/html" \
"text/javascript" \
"text/plain" \
"text/vtt" \
"text/x-component" \
"text/xml"
</IfModule>
</IfModule>
# ------------------------------------------------------------------------------
# | ETags |
# ------------------------------------------------------------------------------
# Remove 'ETags' as resources are sent with far-future expires headers.
# https://developer.yahoo.com/performance/rules.html#etags
# 'FileETag None' doesn't work in all cases.
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
FileETag None
# ------------------------------------------------------------------------------
# | Expires headers |
# ------------------------------------------------------------------------------
# Serve resources with far-future expires headers.
# IMPORTANT: If you don't control versioning with filename-based cache
# busting, consider lowering the cache times to something like one week.
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/schema+json "access plus 0 seconds"
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!) and cursor images
ExpiresByType image/x-icon "access plus 1 week"
# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/manifest+json "access plus 1 year"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rdf+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
# Web fonts
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>