Wie vermeiden Sie das Zwischenspeichern während der Entwicklung?

Gibt es eine einfache Möglichkeit, das gesamte Zwischenspeichern zu verhindern, wenn das Erscheinungsbild von Änderungen an der Site getestet wird? Ich benutze WP Super Cache. Ich kann seinen Cache löschen, indem ich die Option verwende, lösche den Cache für meinen Browser und einige Änderungen an CSS oder Widgets werden nicht aktualisiert. Ich probiere andere Work-arounds aus, z. B. den Wechsel von Browsern oder Computern, aber es muss einen Workflow geben, bei dem ich sicherstellen kann, dass ich die Änderungen sehe, die ich gemacht habe, und nicht irgendein zwischengespeichertes früheres Format? Was ist die beste Lösung dafür?

Solutions Collecting From Web of "Wie vermeiden Sie das Zwischenspeichern während der Entwicklung?"

Fügen Sie die filemtime() Ihres Stylesheets als Versionsparameter hinzu. Nehmen wir an, Ihr Standard-Stylesheet ist in css/default.css und css/default.min.css ( nicht style.css ). Wenn wir ein Stylesheet auf wp_loaded ( nicht init ) registrieren, können wir eine Version als vierten Parameter übergeben. Dies ist die letzte modifizierte Zeit und ändert sich daher jedes Mal, wenn wir die Datei ändern.

 $min = WP_DEBUG ? '': '.min'; $file = "/css/default$min.css"; $url = get_template_directory_uri() . $file; $path = get_template_directory() . $file; $handle = get_stylesheet() . '-default'; // Overridden? if ( is_child_theme() && is_readable( get_stylesheet_directory() . $file ) ) { $url = get_stylesheet_directory_uri() . $file; $path = get_stylesheet_directory() . $file; } $modified = filemtime( $path ); add_action( 'wp_loaded', function() use ( $handle, $url, $modified ) { wp_register_style( $handle, $url, [], $modified ); }); add_action( 'wp_enqueue_scripts', function() use ( $handle ) { wp_enqueue_style( $handle ); }); 

Wenn Sie Node.js und Grunt verwenden, empfehle ich dringend Browsersync . Es wird Ihre Dateien überwachen und sie sofort aktualisieren, wenn sie sich ändern. Es kann auch die Scroll-Position, Formularübergaben und mehr über mehrere offene Browser synchronisieren. Sehr cool.

Dies mag übermäßig einfach erscheinen, aber wie wäre es, wenn Sie das Caching deaktivieren, bis Sie mit dem Entwicklungsteil Ihrer Website fertig sind? Es ist mehr als einfach ein- und auszuschalten.

Nachdem ich viele Male nach einer einfachen Lösung gesucht habe, habe ich beschlossen, etwas zu finden, das funktioniert!

Also … nachdem ich darüber nachgedacht habe, fand ich eine großartige Möglichkeit, Caching zu überschreiben, während ich neue Webseiten entwickle … (und es ist einfach).

Was wir brauchen, ist wp zu sagen, dass dies eine neue CSS-Version ist …

Vor Änderungen:

 wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), false, 'all' ); 

Nach Änderungen:

 wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css?v='.time(), array(), false, 'all' ); 

Das haben wir hinzugefügt:

 ?v='.time() 

Erläuterung:
Wir fügen der css-Datei im Grunde eine dynamische Versionsnummer hinzu, die den Browser zwingt, die neue CSS bei jeder Aktualisierung zu laden.

Vergessen Sie nicht, das Programm nach der Entwicklung zu entfernen. Andernfalls wird das Caching für diese Datei nicht funktionieren und es würde immer wieder Benutzer laden.

Diese Technik funktioniert für css & js Dateien – hoffe das hilft;)

Ich weiß, dass diese Frage eine Antwort angenommen hat, aber ich denke, dass diese Antwort für das vorliegende Problem immer noch zu kompliziert ist und je nach Benutzer inkorrekt sein kann (nichts für ungut), also dachte ich, ich würde es trotzdem teilen wie ich Caching umgehen, wenn ich meinen Entwickler mache (nicht nur mit WordPress).

Die meisten modernen Browser haben etwas namens Inkognito-Modus . In diesem Modus wird nichts auf Ihrem Computer zwischengespeichert, so dass jede Aktualisierung ein neuer Slate-Download vom Server ist. Im Internet Explorer drücken Sie Ctrl + Shift + P In Firefox und Chrome drücken Sie Ctrl + Shift + N

Wenn Ihr Browser keinen Inkognito-Modus hat, können Sie normalerweise ein hartes Neuladen erzwingen, indem Sie in Firefox und Chrome die Tastenkombination Ctrl + F5 für IE bzw. Ctrl + Shift + R drücken.

Was Ihre Frage zu den CSS-Dateien (und im Wesentlichen all Ihren Asset-Dateien, wie Bildern und Javascript-Dateien) angeht, werden diese von WP Super Cache in keiner Weise zwischengespeichert. Ihre Einstellungen und / oder die Verwendung dieses Plugins haben keinen Einfluss darauf, wie diese Dateien geliefert werden. Was ist Caching diese Dateien sind Ihr Browser , und das ist der Grund, warum Sie ein Hard Reload tun.

Was das Plugin tut, ist, wie WordPress Ihre HTML-Dateien (über PHP) erstellt und eine Kopie speichert, so dass das nächste Mal, wenn jemand denselben Post, dieselbe Seite oder was auch immer anfordert, die Kopie bereitstellt und nicht muss Überarbeiten Sie den PHP-generierten HTML-Code erneut und sparen Sie dadurch Rechenzeit und laden Sie Ihre Seiten schneller. (Ich hoffe, das ist klar.)

Das Problem dabei ist, dass wenn Sie einen Zeitstempel in die URL Ihrer CSS-Datei über eine PHP-function einfügen, dies eine PHP-Bewertung zu HTML ist und diese von WP Super Cache zwischengespeichert wird. Jede Anfrage an denselben Post wird denselben Zeitstempel haben, da den Benutzern eine Kopie der ursprünglichen Zeitstempelauswertung bereitgestellt wird. (Korrigiere mich, wenn ich falsch liege.)

Um Caching von WP Super Cache zu umgehen, müssen Sie auf der Einstellungsseite des Plug-Ins die Option Don't cache for known users auf true Don't cache for known users einstellen.

Schließlich (und dies ist eine persönliche Vorliebe, denn ich bin ein echter Verfechter, wenn es um das Codieren geht), erfordert die Verwendung von inkognito oder forced hard reloads kein unnötiges Markup auf Ihren HTML-Seiten. Natürlich fügt das Hinzufügen eines Zeitstempels nur 13 Bytes pro statische Datei pro Anfrage hinzu, aber hey, wie ich schon sagte, ich bin ein Verfechter für diese Art von Sachen. Es sind immer noch 13 Bytes unnötig.

Meine Güte, viele Möglichkeiten, diesen zu beantworten! In erster Linie haben Sie nach zwei verschiedenen Dingen gefragt: WP Super Cache und CSS-Dateien. Diese werden an verschiedenen Stellen unterschiedlich zwischengespeichert. Daher ist es wichtig zu erkennen, wo sich Ihr Problem befindet.

Wenn WP Super Cache verwendet wird, können Sie während der Entwicklung die Konstante DONOTCACHEPAGE in Ihrer functions.php definieren, um zu verhindern, dass WP Super Cache irgendetwas zwischenspeichert. Vergessen Sie nicht, dies beim Start zu entfernen!

define('DONOTCACHEPAGE', true);

Jede Site hat auch einen eindeutigen Schlüssel zum Anhängen an die URL, um eine neue Version der Seite zu laden, die Sie auf der Registerkarte “Erweitert” finden, glaube ich.

Um es auf eine noch bessere Lösung zu reduzieren, sollten Sie eine Entwicklungsumgebung und eine Produktionsumgebung einrichten, in denen WP Super Cache in Ihrer Entwicklungsumgebung nicht aktiviert ist (vorausgesetzt, dass dies Ihr Problem ist).

Wenn Ihr Problem mit CSS / JS-Dateien auftritt, sehen Sie sich die Antwort von toscho und den folgenden Kommentar von m0r7if3r an.

HyperCache deaktiviert das Zwischenspeichern, wenn Sie als Administrator angemeldet sind. Nicht sicher, ob WP Super Cache die gleiche functionalität hat.

Wenn Sie Chrome verwenden (was ich sehr empfehlen kann), öffnen Sie den Inspektor, klicken Sie auf das Einstellungssymbol in der unteren rechten Ecke und wählen Sie unter “Netzwerk” die Option “Cache deaktivieren”.

Wie gesagt für wp super cache, aber für general WP caching in wp-config.php Ändern Sie dazu:

 define( 'WP_CACHE', false ); 

Referenz: codex.wordpress.org

Ich hoffe, dieses Plugin wird Ihnen helfen: https://wordpress.org/plugins/prevent-browser-caching/

Sie können dieses Snippet https://gist.github.com/jhayiwg/92bae4330aeb738a98022d7ab63ce9b1 verwenden

Bei jedem Laden der Seite wird eine neue Version Ihres aktiven Themas css und js generiert