W3 Total Cache, CDN und Themendateien [geschlossen]

10

Ich habe kürzlich die Datei style.css meiner WordPress-Installation aktualisiert. Die Änderung war wirksam: Wenn ich als Administrator angemeldet bin (mein Blog ist so eingestellt, dass dem Administrator niemals eine zwischengespeicherte Version der Site, sondern eine "Live" -Version bereitgestellt wird), kann ich sie sehen.

Mein Blog wird jedoch über ein CDN (mit W3 Total Cache) bereitgestellt. Über das CDN sind die Änderungen nicht wirksam: Das CDN liefert nicht die geänderten Dateien aus meinem Thema. Obwohl ich sie nach der Änderung hochgeladen habe (Dashboard> Leistung> CDN> Themendateien hochladen.

Mein CDN läuft auf AmazonCloud Front. Und Minify ist im W3 Total Cache deaktiviert.

Die über mein CDN bereitgestellte Themendatei ist eine komprimierte Version: style.css.gzip

Sollte ich Objekte aus meinem CDN "löschen" oder etwas länger warten (es ist mehr als eine Woche her). Und ja, ich entleere den Cache des Browsers, mit dem ich sehe, dass die Änderungen wirksam werden. Oder fehlt mir noch etwas?

Vielen Dank,

P.

Parneix
quelle

Antworten:

10

Sie müssen entweder

  1. Versionieren Sie Ihre Dateien (indem Sie sie aufrufen style.css?ver=xxx.xxx) und stellen Sie sicher, dass in Ihrer CloudFront-Distribution "Forward Query Strings" aktiviert ist. Dies ist die bessere Option, da Sie lediglich die Nummer in der Abfragezeichenfolge erhöhen müssen und CloudFront diese Datei automatisch abruft.

  2. Manuelles Ungültigmachen Ihrer Dateien über die AWS-Konsole (beim Bearbeiten Ihrer Distribution gibt es eine Registerkarte zum Ungültigmachen).

Gehen Sie wie folgt vor, um "Forward Query Strings" zu aktivieren:

  • Bearbeiten Sie Ihre Cloudfront-Distribution, indem Sie das Kontrollkästchen links neben dem 'i' aktivieren und dann in der Symbolleiste auf die Schaltfläche "Verteilungseinstellungen" klicken
  • Gehen Sie zur Registerkarte Verhalten
  • Wählen Sie die Zeile aus und klicken Sie auf "Bearbeiten".
  • Ändern Sie "Abfragezeichenfolgen weiterleiten" in "Ja"
  • Klicken Sie auf "Ja, Bearbeiten"
anu
quelle
1
@kaiser yup, die datetime als Version ist der beste Weg, um die Datei zu versionieren. Sie müssen jedoch weiterhin sicherstellen, dass die Option "Abfragezeichenfolgen weiterleiten" in CloudFront aktiviert ist. Andernfalls wird Ihre gut gestaltete Versionsnummer ignoriert: P
anu
Vielen Dank. Ich habe zwei Fragen an Sie, da ich mit diesem Verfahren nicht vertraut bin. 1) Der Name der "versionierten" Dateien sollte genau dem Beispiel folgen, das Sie gegeben haben (mit dem Fragezeichen, den Gleichheitszeichen und ersetzen Sie alle "x" durch Zahlen meiner Wahl), oder? 2) Auf meiner AWS-Konsole für CLoudFront klicke ich auf das "I" links in der Tabelle direkt neben der Distribution, die ich für mein Blog erstellt habe. Dadurch kann ich auf die Einstellungen der Distribution zugreifen. Dort kann ich sehen, dass die "Forward Query Strings" "false" sind. Sollte ich dieses "Verhalten" mit den gleichen Werten replizieren, aber mit "true" für "For. Q. Strings"
Parneix
1
1. Ja, oder Sie können die gut gemeinte, aber unvollständige Antwort von @ kaiser verwenden, um Ihre Datei zu benennen. 2. Ich werde die Antwort mit dem Prozess aktualisieren
anu
8

Es gibt einen ziemlich einfachen "Trick", um das Caching zu verhindern, wenn sich der Dateiinhalt ändert: Fügen Sie eine Versionsnummer hinzu, die auf das späteste Datum / die letzte Uhrzeit eingestellt ist, zu der Sie Ihre Datei geändert haben.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

Dies wird ?ver=0123456789an Ihren style.css-Referenzlink in Ihrer Kopfzeile angehängt. Die Versionsnummer ändert sich nur, wenn der Inhalt der Dateien geändert wird. Sie haben also eine Lösung, die perfekt mit a) serverseitigem Cache b) Browser-Cache funktioniert und automatisch aktualisiert wird.

Kaiser
quelle
Ok, das ist eine wirklich interessante Option: Sie muss meine style.cssDatei nach jeder Änderung nicht mehr manuell versionieren (was ich an der einen oder anderen Stelle vergessen werde). Wenn ich jetzt fragen darf, wo füge ich diesen Code hinzu? Ich würde meine functions.phpDatei erraten ?
Parneix
Ich weiß nicht, wo Sie diesen Code hinzufügen müssen. Durchsuchen Sie einfach Ihre Themendateien und ersetzen Sie den "normalen" Aufruf der Datei style.css. Ich werde ein kurzes Update veröffentlichen, damit Sie es in Ihre Datei functions.php einfügen können (dies bedeutet immer noch, dass Sie den ursprünglichen Aufruf entfernen müssen). Und übrigens: Dies ist nur eine Ergänzung zu @ anu Antwort. (Upvotes immer noch geschätzt :)
Kaiser
1
Kein Problem! Ich verstehe vollkommen, dass sich die Position dieses Codes je nach verwendetem Thema wahrscheinlich ändern wird. Ich werde es schaffen, es meiner functions.phpDatei hinzuzufügen . Ich denke immer noch, dass es eine gute Ergänzung zu der von @anu bereitgestellten Lösung ist. Vielen Dank für die Hilfe.
Parneix
-1

eine kurze Antwort ...

  1. Löschen Sie alle Ihre Themendateien und laden Sie sie erneut hoch. Manchmal löscht die Löschaktion das CDN

  2. Ja, Sie könnten Purge ausprobieren - aber das Löschen und erneutes Hochladen ist normalerweise schneller.

  3. Überprüfen Sie auch die Einstellungen in W3TC und in Amazon. Der Standard-Cache für in W3TC beträgt normalerweise 365 Tage. Das ist 31536000 Sekunden :)

In Amazon gibt es eine Einstellung für Endpunkte, um das CDN erneut abzufragen. Ich weiß, in Rackspace ist der Standard 24 Stunden.

Damien
quelle
1
Es gibt viel bessere Möglichkeiten, dies zu tun, siehe meine Antwort
anu
„Löschen Sie alle Ihre Themendateien und laden Sie sie erneut hoch. Manchmal löscht die Löschaktion das CDN. "Sie möchten, dass ich sie auf meiner Website lösche, oder? Laden Sie sie dann in meiner WordPress-Installation erneut hoch. Und dann schätze ich, dass die "Themendateien hochladen" erneut über das W3 Total Cache-Dashboard ausgeführt werden?
Parneix
1
@Parneix im Ernst, löschen Sie nicht alles, es sei denn, Sie müssen. Es wird mit ziemlicher Sicherheit nicht funktionieren, wenn Sie nicht auch alles aus dem CDN löschen. Es gibt viel bessere Möglichkeiten , um Ihre veraltete CSS - Datei ungültig zu machen
Anu
1
Ja dank! Ich habe Ihren Vorschlag gut zur Kenntnis genommen. Ich schätze die Hilfe, die ich hier bekomme, sehr. Ich löse nicht nur mein Problem, sondern lerne auch neue Dinge.
Parneix