CDN funktioniert nicht, Dateien werden nicht vom CDN geladen

Wenn du nach dem Aktivieren der CDN-Option und der Eingabe deines CNAME-Werts in WP Rocket feststellst, dass deine Dateien nicht von deinem CDN ausgeliefert werden, überprüfe bitte die folgenden Schritte.

In deinem WP-Admin gehe zu Einstellungen → Allgemein und prüfe die Schreibweise deiner Website-URL. Hat sie ein www vor dem Domainnamen?

Einstellungsfelder für WordPress-Adresse und Website-Adresse im WP-Admin

Technisch gesehen stellen die www- und die nicht-www-Version deines Domain-Namens zwei getrennte Bereiche dar. Wenn die URLs deiner Dateien auf dein CDN umgeschrieben werden, schaut WP Rocket der Domain-Version wie du sie in deiner Website-Adresse festgelegt hast. Jede andere Version wird als externe URL gewertet und daher nicht mit auf die CDN-URL umgeschrieben werden.

Wenn du also ein www in deiner Website-Adresse unter Einstellungen → Allgemein verwendest, musst du dafür sorgen, dass auch alle Links zu Dateien deiner Website diese Version verwenden, sonst werden sie nicht auf deine CDN-URL umgeschrieben.

Im folgenden Beispiel gibt es zwei Bilder. Eines verwendet in seiner URL http://www.lucybeer.com und das andere verwendet http://lucybeer.com.

Browser and source code view for 2 images with www and non-www URL

Nur das erste Bild wird auf das CDN umgeschrieben werden, das andere nicht – wegen des fehlenden www.

Source code view for 2 images with www and non-www URL

CDN ohne Caching (z.B. für angemeldete Personen)

Auf Seiten ohne Caching (z.B. wenn eine Person eingeloggt ist) kann es vorkommen, dass manche URLs nicht auf die CDN-Domain umgeschrieben werden. Das ist kein Fehler, sondern korrektes Verhalten. Es hat folgenden technischen Hintergrund:

WP Rocket nutzt zum Ersetzen der Domain durch die CDN-Domain die folgenden WordPress Filter Hooks:

  • template_directory_uri
  • wp_get_attachment_url
  • smilies_src
  • stylesheet_uri
  • wp_get_attachment_image_src
  • wp_calculate_image_srcset
  • the_content
  • widget_text
  • style_loader_src
  • script_loader_src

Alle CSS-, JavaScript-, oder Bild-Dateien, die durch einen dieser Hooks in WordPress laufen, werden auf die CDN-Domain umgeschrieben. Dies funktioniert auf Seiten mit und ohne Cache, weil es sich eben um WordPress-eigene Filter handelt.

Zusätzlich nutzt WP Rocket noch seinen eigenen Filter Hook  rocket_buffer, um solche URLs zu erfassen, die nicht durch einen WordPress Hook geladen werden. Dies könnte z.B. eine Stylesheet-URL sein, die entgegen der WordPress Code Standards „hart“ in eine Template-Datei geschrieben wurde.

Der Filter rocket_buffer kommt ausschließlich auf Seiten zum Einsatz, auf denen Caching aktiv ist. Für angemeldete Personen, oder auf Seiten mit deaktiviertem Cache kann es daher in seltenen Fällen vorkommen, dass einzelne Datei-URLs nicht auf die CDN-Domain umgeschrieben werden.