Zitat von
leo
Ziel des Workshops war es, den Page Speed Score so hoch wie möglich zu bekommen.
Für die betreffende Seite des Workshops erhalte ich sogar einen Google Page Speed Score von 97/100!
Was mir noch aufgefallen ist: Wie in den Google Performance Best Practices nachzulesen ist (und auch aibiman schon angedeutet hat) könnten einige (alte?) Proxy-Server Probleme mit Query Strings in der URL haben, wenn es darum geht, statische Ressourcen geeignet zu cachen.
Don't include a query string in the URL for static resources.
Most proxies, most notably Squid up through version 3.0, do not cache resources with a "?" in their URL even if a Cache-control: public header is present in the response. To enable proxy caching for these resources, remove query strings from references to static resources, and instead encode the parameters into the file names themselves.
Was die MooTools-Templates betrifft, könnte man dazu in Contao die Versionierung der Ressourcen direkt in die URL mit einbauen, beispielsweise so:
PHP-Code:
<?php
// Add mediabox style sheet
$GLOBALS['TL_CSS'][] = 'plugins/mediabox/css/mediabox-'. MEDIABOX .'.css|screen';
?>
<script type="text/javascript" src="plugins/mediabox/js/mediabox-<?php echo MEDIABOX; ?>.js"></script>
Über eine entsprechende RewriteRule müsste dann allerdings die URL mit dem Versionsfragment wieder so umgeschrieben werden, dass der Server die dort vorhandenen Ressourcen auch wieder findet.
Auch die URL zur Library für das MooTools-Framework auf googleapis.com enthält die Versionsnummer als Fragment der URL selbst:
HTML-Code:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js"></script>
Für alle anderen von Contao mit einer Versionsnummer versehenen Ressourcen (mootools-more.js, Stylesheets usw.) müsste man hingegen weitreichende Änderungen im Core selbst durchführen...
Weiters empfiehlt Google in seinen Performance-Regeln, einen "Cache-control: public" Header mitzusenden, damit statische Ressourcen auch von öffentlichen Proxy-Servern (ISPs) gecached werden können:
Code:
Header append Cache-Control "public"
bzw. falls man zusätzlich auch noch die Cache-Zeit getrennt nach Dateityp festlegen möchte z.B.
Code:
<FilesMatch "\.(ico|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "public, max-age=2592000"
</FilesMatch>
<FilesMatch "\.(css|js)$">
Header set Cache-Control "public, max-age=604800"
</FilesMatch>
@aibiman:
Richtigerweise müsste es eher heißen "Konfigurieren von ETags" und zwar so, dass die serverspezifische ID ("INode") aus dem Tag entfernt wird:
Code:
FileETag MTime Size
bzw. vielleicht besser
Code:
FileETag -INode MTime Size
Möchte man hingegen ganz auf die Verwendung von ETags verzichten (und stattdessen den Last-Modified Header verwenden) dann könnte man die ETags auch gleich ganz deaktivieren
und ggf. auch aus dem HTTP-Header entfernen
So spart man sich zusätzlich noch ein paar "wertvolle" Bytes im Header.
Lesezeichen