Google und natürlich auch die Nutzer von Webseiten legen einen immer größeren Fokus auf die Antwortzeit des Webservers. Google bietet hierfür ein spezielles Tool welches eine Webseite auf Verbesserungsmöglichkeiten hin untersucht. Neben den recht einfach via Plugin’s lösbaren Problemen wie z. B. die minifizierung und Zusammenführung von CSS und Javescript Dateien gibt es auch etwas komplexere Probleme die gelöst werden müssen um einen guten Wert zu erreichen.
Seiteninhalte
Komprimieren & Cachen
Der einfachste Weg die vom (Apache-) WEbserver bereitgestellten Daten so auszuliefern, dass diese maximal komprimiert sind und gleichzeitig vom Browser gecached werden, ist das einfügen des nachfolgenden codes in the virtual host Konfiguration:
<IfModule mod_expires.c> ExpiresActive On ExpiresDefault A2592000 <FilesMatch "\.(txt|xml|js)$"> ExpiresDefault A2592000 </FilesMatch> <FilesMatch "\.(css)$"> ExpiresDefault A2592000 </FilesMatch> <FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$"> ExpiresDefault A2592000 </FilesMatch> <FilesMatch "\.(jpg|jpeg|png|gif|swf|webp)$"> ExpiresDefault A2592000 </FilesMatch> </IfModule> <IfModule mod_headers.c> <FilesMatch "\.(txt|xml|js)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> <FilesMatch "\.(css)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> <FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav|mp4|m4v|ogg|webm|aac)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> <FilesMatch "\.(jpg|jpeg|png|gif|swf|webp)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> </IfModule> <IfModule mod_deflate.c> <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> <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-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "image/x-icon" \ "text/cache-manifest" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" </IfModule> <IfModule mod_mime.c> AddEncoding gzip svgz </IfModule> </IfModule>
PHP OpCache
Ein weiterer Weg um insbesondere die grunsätzliche Antwortzeit des eigenen Server zu verbessern ist der Einsatz von OpCache. Dieses PHP Modul sorgt dafür, dass wesentliche Code Teile nicht erst zur Laufzeit berechnet werden müssen da sie gespeichert werden.
Anpassungen der php.ini
vi /etc/php5/apache2/php.ini
Suche folgenden Code:
;opcache.enable=0
Und ersetzte ihn mit:
opcache.enable=1
Neben dem grundsätzlichen einschalten des Moduls kann man noch weitere Einstellungen anpassen um den Cache auszureizen. z. B.
opcache.memory_consumption=128 opcache.max_accelerated_files=4000 opcache_revalidate_freq = 240
Einschalten des PHP Moduls
sudo php5enmod opcache
Neustart des Webservers
sudo service apache2 restart