anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 19 Nov, 2018 08:39

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: Do 04 Jun, 2009 12:19 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3898
Wohnort: Basel
Geschlecht: Männlich
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:
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.
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();
?>


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum