WordPress – GeneratePress-Thema – Cache-Busting

Lesezeit: 5 Minuten

Ich betreue a WordPress-Site, die das GeneratePress-Theme verwendet. Zur Erweiterung wurde eine Child-Theme-Lösung verwendet. Es ist bereits ein ziemlich entwickeltes untergeordnetes Thema (um dramatische Lösungen zu vermeiden).

Für eine Weile Ich hatte Probleme mit dem CSS-Cache Jedes Mal, wenn ich das CSS aktualisiere. style.css untergeordnete Stylesheets liefern die Cache-Version statt der modifizierten.

Ich glaube das Das GeneratePress-Design lädt die übergeordnete style.css + untergeordnete style.css, falls vorhanden.

generatepress/functions.php

// Enqueue our CSS.
wp_enqueue_style( 'generate-style-grid', get_template_directory_uri() . "/css/unsemantic-grid{$suffix}.css", false, GENERATE_VERSION, 'all' );
wp_enqueue_style( 'generate-style', get_template_directory_uri() . '/style.css', array( 'generate-style-grid' ), GENERATE_VERSION, 'all' );
wp_enqueue_style( 'generate-mobile-style', get_template_directory_uri() . "/css/mobile{$suffix}.css", array( 'generate-style' ), GENERATE_VERSION, 'all' );
wp_add_inline_style( 'generate-style', generate_base_css() );

// Add the child theme CSS if child theme is active.
if ( is_child_theme() )
    wp_enqueue_style( 'generate-child', get_stylesheet_uri(), true, filemtime( get_stylesheet_directory() . '/style.css' ), 'all' );

Wenn ich dieses Stück Code lese … scheint es so Wenn ein untergeordnetes Thema erkannt wird, sollte es bereits das Cache-Busting durchführen ABER … für mich nicht. Ich erhalte keine URL mit dem Filemtime-Ergebnis als Versionsparameter.

Mein Child-Theme functions.php stellt keine ‘style.css’ in die Warteschlange. Trotzdem wird es nach der übergeordneten style.css geladen.

VERSUCH 1
Ich habe den Abschnitt zum Hinzufügen von CSS aus der generatepress gelesen https://docs.generatepress.com/article/adding-css/.

Ich sehe nicht, wie ich die untergeordnete style.css-Datei zwischenspeichern kann.

VERSUCH 2
Meine ersten Versuche, das Problem zu lösen, basieren auf Einreihen des Stylesheets, wenn wp_enqueue_scripts ausgelöst wird.

function theme_css(){
    wp_enqueue_style( 'my-theme-style', get_stylesheet_directory_uri().'/style.css', 'generate-style', '1.1', 'all');
}
add_action( 'wp_enqueue_scripts', 'theme_css' );

Ich bezog mich auf Generieren-Stil da es mir scheint, dass es sich um den übergeordneten Standardstil handelt (untergeordnete style.css würden nach der übergeordneten style.css geladen). Sie können dies im vorherigen Code-Snippet sehen. Es funktioniert nicht für mich. Das Child-Theme würde zuerst geladen und später das Stylesheet des Parent-Themes. Das ist bedauerlich und bricht das CSS. Die Reihenfolge sollte umgekehrt sein (übergeordnete style.css zuerst und untergeordnete style.css später). Wie gesagt, je nach Generieren-Stil hilft nicht.

VERSUCH 3
Erstellen Sie das Stylesheet mit einem anderen Dateinamen. Generatepress beschwert sich, da es eine Stylesheet-Datei style.css benötigt, wenn child_theme erkannt wird. Ich könnte ein untergeordnetes Thema mit einer leeren style.css und dem neuen Stylesheet haben. Das Problem wäre, dass der style.css-Cache für wiederkehrende Benutzer bereitgestellt wird.

Ich bin irgendwie neu in WordPress, also kenne ich keinen anderen Mechanismus, der das lösen könnte. Vielleicht gibt es eine einfachere Lösung, die funktionieren könnte?

  • Haben Sie versucht, Ihren Browser-Cache zu leeren, um Ihre Änderungen zu sehen? Das ist normalerweise meine erste Anlaufstelle für solche CSS-Caching-Probleme.

    – Nathanael Flick

    3. Oktober 2017 um 7:13 Uhr

  • Ja, das bereinigt meinen Cache, aber nicht den Cache der Hunderte von Leuten, die die Seite täglich besuchen.

    – kitimenpolku

    3. Oktober 2017 um 7:16 Uhr

  • Führen Sie ein Caching-Plugin auf der Website aus? Wenn Sie Autoptimize verwenden, wie es die Themendokumentation hier vorschlägt, generatepress.com/fastest-wordpress-themedann müssen Sie den Cache löschen und Ihre Benutzer sehen die Änderungen.

    – Nathanael Flick

    3. Oktober 2017 um 7:17 Uhr


  • Ja, in der Produktion automatisch optimieren. Es kommt mit einem alphanumerischen Schwanz für die zufällige Versionierung. Ich weiß, worauf du hinauswillst. Durch das Löschen dieses Caches sollte ein neuer generiert werden. Vielen Dank

    – kitimenpolku

    3. Oktober 2017 um 7:20 Uhr


  • Gern geschehen. 🙂 Sie können es aus dem Plugin selbst löschen: Melden Sie sich bei wp-admin an und gehen Sie zu den Autoptimize-Plugin-Einstellungen, um den Cache zu löschen, und es wird das tun und einen neuen Cache für Sie starten.

    – Nathanael Flick

    3. Oktober 2017 um 7:24 Uhr

Benutzer-Avatar
Nathaniel Flick

Wenn Sie Autoptimize verwenden, wie es die Themendokumentation vorschlägt hier, dann müssen Sie den Cache löschen und Ihre Benutzer sehen die Änderungen. Dieses Zitat stammt aus dieser Dokumentation:

Autooptimize installieren

Die Reduzierung der Menge an CSS- und JS-Dateien, die bei jedem Seitenladevorgang geladen werden, wird einen großen Unterschied in Ihrer Seitengeschwindigkeit bewirken.

Ein weiterer Vorteil von Autoptimize ist, dass das von Ihren Optionen im Customizer generierte CSS in einer externen Datei gebündelt wird, sodass Ihr Browser es zwischenspeichern kann.

So löschen und setzen Sie den Autoptimize-Cache zurück: Melden Sie sich bei wp-admin an und gehen Sie zu Plugins/Autoptimize/Settings, um den Cache zu löschen, und es wird das tun und einen neuen Cache für Sie starten. Es gibt auch ein Autoptimize-Element in der oberen Menüleiste in wp-admin; es ist auch praktisch dafür.

  • Hallo, der Link ist kaputt. Vielen Dank

    – kitimenpolku

    3. Oktober 2017 um 9:16 Uhr

  • Es ist jetzt behoben, sorry, ich habe das https: Protokoll verdoppelt.

    – Nathanael Flick

    3. Oktober 2017 um 10:24 Uhr

Obwohl die Frage als beantwortet markiert ist, wurde Autooptimize in der ursprünglichen Frage nicht erwähnt. Also um die Ausgangsfrage zu beantworten.

Der richtige Weg, Ihren Cache zu sprengen, besteht darin, Abfragezeichenfolgen an Ihre statischen Asset-URLs anzuhängen, z.

https://example.com/wp-content/themes/themetry/style.css?3242564353

wp_enqueue_style( ‘child-style’, get_stylesheet_uri(), array(), ‘3242564353’, ‘all’ );

<link rel="stylesheet" id='child-style-css'  href="https://example.com/wp-content/themes/thetheme/style.css?ver=3242564353" type="text/css" media="all" />

Sie können dies automatisieren, indem Sie „3242564353“ durch die PHP-Funktion filemtime() ersetzen.

wp_enqueue_style( 'child-style', get_stylesheet_uri(), array(), filemtime(), 'all' );

Wenn Sie jetzt die geänderte Datei speichern, wird eine andere Abfragezeichenfolge bereitgestellt, und der Cache wird gesprengt.

1016250cookie-checkWordPress – GeneratePress-Thema – Cache-Busting

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy