Das folgende Skript lässt sich so für CSS- und JavaScript-Dateien einsetzen. Packt man alle Tipps der vorherigen Artikel zusammen, kommt dabei folgendes Heraus:
<?php
header('Content-Type: text/javascript');
$expires = 60*60*24*7;
header("Pragma: public");
header("Cache-Control: maxage=".$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
$files = array(
"mootools.js",
"caption.js"
);
$ETag = "";
foreach ($files as $file) {
$ETag = dechex(fileinode($file));
$ETag.= "-".dechex(filesize($file));
$ETag.= "-".dechex(((filemtime($file).str_repeat("0",6)+0) & (8589934591)));
$ETag.="-";
}
$ETag= md5($ETag);
header("Etag: $ETag");
if (trim($_SERVER["HTTP_IF_NONE_MATCH"]) == $ETag) {
header("HTTP/1.1 304 Not Modified");
exit;
}
if( strpos($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip") !== FALSE){
ob_start("ob_gzhandler");
} else {
ob_start();
}
foreach ($files as $file) {
include($file);
}
ob_end_flush();
?>
Das Script wird einfach ins Verzeichnis der JavaScripts (/media/system/js) z. B. unter dem Namen "js_together.php" kopiert. Anschließend werden wird dieses Skript in den Kopf der index.php des Templates eingebunden:
...
<head>
<script type="text/javascript" src="/media/system/js/js_together.php"></script>
<jdoc:include type="head" />
...
Es folgt die Betrachtung der Ladezeiten: Nach dem ersten Aufruf.
Die JavaScript-Dateien "mootools.js" und "caption.js" werden zusammen in der Datei "js_together.php" übertragen. Insgesamt sind das 20,7 KByte. Der Spaß dauert hier gerade mal 569 ms (Messung mit Firebug, von meinem Internetanschluss).
Der erneute Aufruf der Seite ...
... bewirkt, dass die Datei "js_together.php" nur die Meldung "304 Not Modified" zurückgibt. Das Ganze passiert in 192 ms. Wieder ein wenig Zeit gespart.
Das Ergebnis nach den Optimierungen aus "der perfekten Lösung für CSS- und JavaScript-Dateien":
Ein großer Erfolg wir dann auch sofort beim erneuten Laden der Seite sichbar:
Innerhalb von 1,4 Sekunden ist alles neu geladen. Nur fünf Bilder scheinen noch nicht gecached zu werden. Da muss man nochmal nachfassen.
- Details
- Erstellt: 08. Dezember 2013
- Zuletzt aktualisiert: 08. Dezember 2013
Weiterhin noch der Hinweis: Die Kommentar-Erweiterung arbeitet mit Cookies! Ohne aktive Cookies werden die Captchas nicht erkannt!