anpera.net
http://anpera.homeip.net/phpbb3/

Seitenaufbau von HTML-Seiten beschleunigen
http://anpera.homeip.net/phpbb3/viewtopic.php?f=12&t=4912
Seite 1 von 1

Autor:  Eliwood [ Do 04 Jun, 2009 12:19 ]
Betreff des Beitrags:  Seitenaufbau von HTML-Seiten beschleunigen

Da das nicht speziell mit LotGD zu tun hat, poste ich diesen Thread in diesem Subforum ;)

Auf der Suche nach Möglichkeiten, um den Seitenaufbau zu beschleunigen, habe ich mir verschiedene Möglichkeiten angesehen. Der Hauptgrund, warum Seiten zumindest beim ersten Besuch langsam aufbauen, liegt an den vielen Zusatzdateien, die der Browser herunterladen muss. Bilder, CSS-Dateien, alle Dateien brauchen eine zusätzliche Verbindung zum Server - und ein Browser erstellt von denen normalerweise nicht sonderlich viele parallel. Firefox sogar nur 2, was aber da änderbar ist.
Ein Ansatzpunkt ist deshalb das vermeiden von Bildern. Zumindest von Bildern in externen Dateien: Es ist durchaus (solange man keinen Internet-Explorer besitzt...) möglich, Bilder direkt in HTML und CSS einzubinden. Dazu muss das Bild zuerst base64-codiert werden. Das kann dann so aussehen:
$this->bbcode_second_pass_code('', 'background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAIAAAAmkwkpAAAABGdBTUEAALGPC/xhBQAAAB5JREFUGFdjZGBgMDY2BpIgAGEBSRADSkFEIRyIPACIEwX8N5jQZQAAAABJRU5ErkJggg==");')

Angezeigt wird es von fast allen Browsern korrekt, alten Internet Explorern kann man mit Hilfe der Conditional Comments eine zusätzliche CSS-Datei unterjubeln, welche die Bilder mit Pfaden überschreibt.
Eine andere, praktische Methode ist es, vor allem die CSS-Dateien zu komprimieren. Bei manchen Servern tut dies direkt der Apache, bei andern nicht. Komprimieren ist über eine PHP-Datei eigentlich nicht kompliziertes - kompliziert wird es nur, wenn die Datei auch vom Browser gecachet werden soll. Deshalb habe ich eine Lösung gebastelt, welche das Änderungsdatum der originalen Datei ausliest und entsprechende Tags sendet. Der Etag ist unique für eine Datei auf einem Server und ist bei Unix-Systemen normalerweise die File Inode, kann aber eigentlich einen beliebigen Wert haben. Hier setze ich den Etag zusammen aus dem verhashten Dateinamen, dem verhashten Dateityp und dem zuletzt-geändert-Datum.
$this->bbcode_second_pass_code('', '<?php

if($_GET['q'] == 'showsource') {
show_source(__FILE__);
exit;
}

ob_start('ob_gzhandler');

$filename = 'style.css';
$filetype = 'text/css';

$file = file_get_contents($filename);
$lastmodifiedts = filemtime($filename);
$lastmodified = date('D, d M Y H:i:s O', $lastmodifiedts);

$etag = sprintf('%s-%s-%s', hash('adler32', $filename), hash('adler32', $filetype), hash('sha1', $lastmodified));

header('Content-type: '.$filetype);
header('Last-Modified: '.$lastmodified);
header('Etag: '.$etag);

echo $file;

ob_end_flush();
?>')

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/