INFOPORTAL BERLIN

Immer wiederkehrende Fragen einfach erklärt

Cache Fehler

Cache-Fehler

Um einen schnellen Zugriff auf die von uns zur Verfügung gestellten Daten zu gewährleisten, werden diese in einen schnellen Puffer-Speicher abgelegt. Dieser in der EDV bezeichnete Cache Speicher läuft unbemerkt im Hintergrund ab.  Darüber hinaus verhindert es jedesmal beim Zugriff die aufwendige Neuberechnung der angeforderten Daten. Achten müssen wir aber auf die sogenannten Cache-Fehler. Deshalb überprüfen wir nun mit einem Tool – wie zum Beispiel Pingdom oder PageSpeed ob eine Webseite im Cache richtig

Cache-Fehler mit Fehler

zwischengespeichert wird. Wahrscheinlich erhalten wir eine Mängelanzeige oder besser ausgedrückt einen Cache-Fehler. Es wird der „ver“ – Parameter (die Angabe der Version) als Problem angezeigt. Dieses Problem mit dem Cache-Fehler kommt bei den statischen Ressourcen vor. Hiermit wird die Versionsnummer des Theme oder des PlugIn angegeben wird. Hierbei kommt es vor, dass der Inhalt dieser URL teilweise nicht im Cache zwischengespeichert wird. Es werden also die Daten immer wieder neu vom Server geladen. Das kostet natürlich wertvolle Zeit.

Hier ein reales Beispiel aus dieser Seite:

https://fragmich.berlin/wp-content/themes/fragmich/responsiv.css?ver=1.2.4

In der nachstehenden Grafik ein Original Ausdruck nach dem erfolgten Testlauf.

Remove Query im Klartext

Eine mögliche Problemlösung

Wir entfernen diesen Parameter für die Ausführung von script_loader_src und style_loader_src.

Eine genial einfache wie dumme Idee. Wieso?

Die im lokalen Cache abgelegten Dateien bleiben über einen längeren Zeitraum erhalten. Die Grundlage hierzu ist der von uns angegebenen Zeitabschnitt. Gerade wenn Aktualisierungen für solche Dateien anstehen, können diese nicht mehr wegen der fehlenden Angabe der aktuellen Version erkannt werden. Somit verbleiben im Cache Speicher die veralteten Dateien bestehen. Jene werden nicht aktualisiert.  Extrem wichtig ist dieses bei anstehenden Sicherheit Updates. 

Die Lösung: Remove Query Strings!

Nachfolgenden Source Code wird in die funktions.php des betroffenen Themes eingefügt. Ich würde diese direkt oben hinter der Anweisung „Setup Themes Options“ eintragen.

 

/* —————————————————–
Beginn angepasste_url()
—————————————————- */

function angepasste_url($url, $defaultversion = false) {
if(!is_admin()) {
$parts = parse_url($url);
$query = wp_parse_args($parts[‚query‘], array());

// Parameter auf vorhandene Versionsnummer pruefen
if(isset($query[‚ver‘]) || false !== $defaultversion) {
if(isset($query[‚ver‘])) {
// Praefix „/res-“ + {version value} im *Pfad* ergaenzen
$parts[‚path‘] = ‚/res-‚.$query[‚ver‘].$parts[‚path‘];
// Versionsnummer im Query-String entfernen
unset($query[‚ver‘]);
} else {
$parts[‚path‘] = ‚/res-‚.$defaultversion.$parts[‚path‘];
}

// Handelt es sich um eine PHP-Datei nichts ändern
if(!preg_match( ‚~\.php$~‘, $parts[‚path‘])) {
// URL wieder neu aufbauen
$url = $parts[’scheme‘].‘://‘.$parts[‚host‘].$parts[‚path‘];

// auf weitere Parameter pruefen
if(count( $query ) > 0) {
// Abfrage mit allen verbleibenden Parametern
$parts[‚query‘] = build_query( $query );
// und diese an die URL anhängen
$url .= ‚?‘.$parts[‚query‘];
}
}
}
}

return $url;
}

Funktion als Filter eintragen

add_filter( ’style_loader_src‘, ‚angepasste_url‘ );
add_filter( ’script_loader_src‘, ‚angepasste_url‘ );

/* ———- Ende Funktion angepasste_url ———- */

Source Code angepasste_url() hier zum downloaden

Die Funktion angepasste_url() erhält zwei Parameter: Zum Einen die URL der entsprechenden Datei durch die Variable „$url“ und als optionalen Parameter die Variable $defaultversion, welche als „ver“ Parameter an die URL angehängt wird. Hieraus ergibt sich nach der obigen Beispiel URL folgende Ausgabe:

https://fragmich.berlin/wp-content/themes/fragmich/responsiv.css

Die .htaccess spiel auch noch mit

Damit alles ordentlich ausgeführt wird, bedarf es beim Apache Server noch folgende Anpassung in der .htaccess Datei. Diese befindet sich im Hauptverzeichnis unserer Anwendung.

RewriteEngine on
RewriteRule ^res-([\d\.\-a-zA-Z]+)/(.*) $2?ver=$1 [L]

Somit sollten alle Stylesheets und Scripte ordentlich in den Cache Speicher eingelesen werden.

Updated: 19. Januar 2018 — 23:12
INFOPORTAL BERLIN © 2017 >> Impressum << - >> Datenschutz << - >> Disclaimer << Frontier Theme