100% PageSpeed

P A G E S P E E D

    JavaScript- und CSS-Ressourcen, die das Rendering blockieren, in Inhalten "above the fold" (ohne Scrollen sichtbar) beseitigen

Sichtbare Inhalte priorisieren

Browser-Caching nutzen

Antwortzeit des Servers reduzieren

Bilder optimieren

CSS reduzieren

HTML reduzieren

JavaScript reduzieren

Komprimierung aktivieren

Zielseiten-Weiterleitungen vermeiden

Hintergrund : Am Anfang ist es eine im DSL-Paket enthaltene Inklusivdomain. Dann möchte man sich an PHP und MySQL versuchen, um mehr Dynamik in die homepage zu bekommen und gönnt sich ein kleines Webhosting Paket. Wer bei 1und1 vor dem Problem steht, dass man weder gzip noch mod_deflate in der .htaccess verwenden kann (wäre auch zu einfach), dem könnte wie folgt geholfen werden :

 

Lösung: php.ini, .htaccess und zlib (Änderungen mit Editor z.B.)

 

Schritt 1 :php.ini im Stammverzeichnis ändern oder neu erstellen


output_handler = Off
zlib.output_compression = On
zlib.output_compression_level=6
zlib.output_handler = ob_gzhandler
default_charset = UTF-8

 

Schritt 2 : .htaccess im Stammverzeichnis ändern oder neu erstellen

 

AddType x-mapp-php5.4 .php

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*\.css) gzip.php?type=css&file=$1
RewriteRule ^(.*\.js) gzip.php?type=js&file=$1
RewriteRule ^(.*\.html) gzip.php?type=html&file=$1
</IfModule>


* mit dem Programm gzip.php werden alle css, js und html komprimiert

 

Schritt 3 :gzip.php im Stammverzeichnis erstellen

 

<?php
//prüfen ob zlib compression aktiviert
if(!ini_get('zlib.output_compression')){ die(); }

$allowed = array('css','js','html'); // array mit erlaubten Dateitypen füllen

//prüfen ob angeforderter Dateityp erlaubt
if(isset($_GET['file']) && isset($_GET['type']) && in_array(substr($_GET['file'],strrpos($_GET['file'],'.')+1), $allowed)){
$data = file_get_contents(dirname(__FILE__).'/'.$_GET['file']); // Abruf des Dateinhalts

$etag = '"'.md5($data).'"'; // Datei Etag generieren
header('Etag: '.$etag); // Ausgabe des Etag in den header
// je nach Datei Inhaltstyp in den header ausgeben
switch ($_GET['type']) {
case 'css':
header ("Content-Type: text/css");
break;
case 'js':
header ("Content-Type: text/javascript");
break;
case 'html':
header ("Content-Type: text/html");
break;

}
header('Cache-Control: max-age=29030400, public'); //cache-control header setzen
$offset = 60 * 60 * 24 * 365;
$expires = 'Expires: ' . gmdate('D, d M Y H:i:s',time() + $offset) . ' GMT'; //expires header auf 1 Jahr in der Zukunft
header($expires); // Ausgabe des expires header

//Etag prüfen und nur dann speichern, wenn nicht vorhanden oder geändert
if ($etag == $_SERVER['HTTP_IF_NONE_MATCH']) {
header('HTTP/1.1 304 Not Modified');
header('Content-Length: 0');
} else {
echo $data;
}
}
?>

 

Schritt 4 : Überprüfung des headers, ob die Dateien nun tatsächlich komprimiert ausgeliefert werden.

 

HTTP Response Headers

HTTP/1.1 200 OK

Date Sat, 21 Jun 2014 02:05:37 GMT

Server Apache

Etag "e594071008f7d52c301b9d315771bb25"

Cache-Control max-age=29030400

Content-Encoding gzip

Vary Accept-Encoding

Keep-Alive timeout=2, max=200

Connection Keep-Alive

Transfer-Encoding chunked

Content-Type text/html; charset=UTF-8

... fertig. Das Original findet Ihr unter Enabling Gzip Compression of PHP, CSS, and JS Files Without mod_deflate:

 

http://www.warpconduit.net/2010/10/23/enabling-gzip-compression-of-php-css-and-js-files-without-mod_deflate/

 

Viel Spass damit!


Duplicate Content verhindern

Hintergrund : Nachdem man eine homepage erstellt hat, überprüft man diese auf Validität und Performance. Duplicate Content entsteht, wenn eine Seite beispielsweise über www.muster.de und muster.de erreicht werden kann. Das sind für Suchmaschinen zwei Paar Schuhe. Identischer Inhalt - mehrere URL's oder auch Links genannt.

 

Lösung : .htaccess, canonical-Link

 

Schritt 1 : canonical-Link im head Ihrer Seite setzen

 

<head>

<link rel="canonical" href="http://www.nameIhrerDomain.de/" /> </head>

Schritt 2 : .htaccess im Stammverzeichnis ändern oder neu erstellen

 

# BEGIN Dupkicate Content verhindern
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,QSA,L]
RewriteRule ^index\.(html?|php)$ http://%{HTTP_HOST}/ [R=301,QSA,L]
# END Dupkicate Content verhindern

 

Schritt 3 : Überprüfung auf duplicate content

 


... fertig. Mit diesen Tests werden eine Reihe von weiteren Fragen entstehen.

Historie dieser Page

Seit Dezember 2008 werden in unserem Dorf die Informationen nicht mehr getrommelt, sondern via Internet übertragen. Zumindest war es ab 2008 möglich zwischen zwei Anbietern zu wählen, was ich dann auch tat.

Meine erste Homepage entstand mit Tabellen und diese Unternehmung endete dann in der FeWo Scholle für einen alten und sehr guten Bekannten. Die Tabellenphase ist damit beendet.

Da Scholli nun im September 2014 seinen Anbieter wechseln wird, habe ich mich vorab mit CSS und Optimierungen beschäftigt. Ein Webhosting-Starter-Paket von 1und1 mit php und mySQL kamen hinzu. Seit nunmehr 3 Monaten kämpfe ich gegen die 404 und 500er. Derzeit läuft technisch alles recht stabil und somit kann ich an den content gehen.

Themen wie CDN und asynchron stelle ich vorerst nach hinten - aktuell sind gzip und cache.