Wie vermeidet man Caching während der Entwicklung?
-
-
Es scheint auch [mehrere Plugins] (http://wordpress.org/extend/plugins/css-cache-buster) zugeben,um diesfür CSS zutun.Istes wirklichnotwendig?Tun diese Pluginsetwas,was das Löschen des Browser-Cachenichttut?It seems there are also [several plugins](http://wordpress.org/extend/plugins/css-cache-buster) just to do this for CSS. Is it really necessary? Do those plugins do something that clearing browser cache does not?
- 0
- 2012-01-30
- cboettig
-
Inmeinem Fall stellte sich heraus,dassich den vom DNS-Anbietererstellten Cache (Cloudflare) leerenmusste.Vielen Dankfür diefolgenden Vorschläge.In my case it turned out I had to clear the cache created by the DNS provider (cloudflare). Thanks all for the suggestions below though.
- 0
- 2012-01-30
- cboettig
-
Ichbenutze den Chrome-Browser.Das Inkognito-Fensteristpraktisch,wennich während der Entwicklung auf Cache-Probleme auf Browserebene stoße.I use Chrome browser; Its incognito window comes handy, when I come across browser level cache issues during development.
- 0
- 2013-11-08
- Joseph Kulandai
-
Hoffe,dieses Plugin wird Ihnen helfen: https://wordpress.org/plugins/prevent-browser-caching/Hope this plugin will help you: https://wordpress.org/plugins/prevent-browser-caching/
- 0
- 2018-01-31
- Kostya Tereshchuk
-
9 Antworten
- Stimmen
-
- 2012-01-30
Fügen Sie die
filemtime()
Ihres Stylesheets als Versionsparameter hinzu. Nehmen wir an,Ihr Standard-Stylesheetbefindet sichincss/default.css
undcss/default.min.css
(nichtstyle.css
). Wenn wirein Stylesheet aufwp_loaded
registrieren (nichtinit
) können wireine Version als vierten Parameter übergeben. Diesist die letztegeänderte Zeit und ändert sich daherjedes 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,empfehleich dringend Browsersync . Es überwacht Ihre Dateien und aktualisiert sie sofort,wenn sie sich ändern. Es kann auch die Bildlaufposition synchronisieren,Formulare senden und vielesmehr übermehreregeöffnete Browser hinweg. Sehr cool.
Add the
filemtime()
of your stylesheet as version parameter. Lets say, your default stylesheet is incss/default.css
andcss/default.min.css
(notstyle.css
). When we register a stylesheet onwp_loaded
(notinit
), we can pass a version as fourth parameter. That will be the last modified time and therefore change every time we change the file.$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 ); });
If you are using Node.js and Grunt, I strongly recommend Browsersync. It will watch your files and update them instantly whenever they change. It can also synchronize the scrolling position, form submissions and more across multiple open browsers. Very cool.
-
Danke vielmals.Es scheint,dass dies auch der Ansatz des obigen Pluginsist.Das Problem wurdein meinem Fallnichtgelöst,damein DNS-Anbieter (CloudFlare) die CSS-Datei zwischengespeichert hat,sodassich den Cache dort leerenmusste -ich denke,esgibt keineneinfachen Weg,dies zu umgehen.Im Allgemeinen denkeichjedoch,dass dies diebeste Antwort auf diese Art von Problemist,also werdeich als akzeptiertmarkieren.Dankenocheinmal.Many thanks. It appears this is also the approach of the above plugin. It did not solve the problem in my case because my DNS provider (CloudFlare) was caching the css file, so I had to clear the cache there -- guess there is no simple way around that. In general though, I think this is the best answer to this kind of issue so I'll mark accepted. Thanks again.
- 0
- 2012-01-30
- cboettig
-
Warum verwenden Sie Ihr lokales Stylesheet während der Entwicklungnicht?Why don’t you use your local stylesheet during development?
- 0
- 2012-01-31
- fuxia
-
Beieinigen Cloud-Caching-Diensten wird Ihre Dateimehr als 8 Stunden lang zwischengespeichert. Siemüssen sie daherentweder auffordern,einen besseren Dienstfür die Versionierung zuimplementieren (einigetun dies),Dienste zu ändern oder sienichtmehr zu verwenden.Some cloud caching services will hard cache your file for 8+hours, so you either have to request them to implement a better service for versioning (some do this), change services, or stop using them.
- 0
- 2012-01-31
- Wyck
-
@cboettig CloudFlare verfügt übereine Dev-Modus-Einstellung,die das Cachingfürein 3-Stunden-Fensterbeendet.Nach 3 Stunden wird das Caching automatischfortgesetzt.@cboettig CloudFlare has a dev mode setting which will stop caching for a 3 hour window. It then automatically resumes caching after 3 hours.
- 0
- 2014-08-25
- Gilbert
-
- 2014-08-18
Nachdemich viele Malenacheinereinfachen Lösunggesucht hatte,entschiedichmich,etwas zufinden,dasfunktioniert!
Also ...nachdemich darübernachgedacht hatte,fandicheine großartige Möglichkeit,das Cachingbeim Entwickelnneuer Websites zu überschreiben ... (undesisteinfach).
Wirmüssen wpmitteilen,dasses sich umeine neue CSS-Version wie diese handelt ...
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' );
Folgendes haben wir hinzugefügt:
?v='.time()
Erläuterung:
Grundsätzlichfügen wir der CSS-Dateieine dynamische Versionsnummer hinzu,die den Browser zwingt,dieneue CSSjedes Mal zu laden,wenn wir sie aktualisieren.Vergessen Sienicht,esnach Abschluss der Entwicklung zuentfernen,da sonst das Cachingfür diese Dateinichtfunktioniert undesfür wiederkehrende Benutzerimmer wiedergeladen wird.
Diese Technikfunktioniertfür CSS & amp;jsfiles - hoffe das hilft;)
After searching for a simple solution many times i decided to find something that works!
so... after thinking about it i found a great way to override caching while developing new websites... (and its easy).
What we need is to tell wp this is a new CSS version like this...
Before changes:
wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), false, 'all' );
After changes:
wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css?v='.time(), array(), false, 'all' );
This is what we added:
?v='.time()
Explanation:
We are basically adding a dynamic version number to the css file which forces the browser to load the new css every time we update it.Don't forget to remove it after your done developing otherwise your caching won't work for this file and it would load for returning users again and again.
This technique works for css & js files - hope this helps ;)
-
Ziemlich schön,abernochbesser,verwenden Sieeinfachtime ()im 4. Parameter,der Versionist.Was Ihnengeben würde: `wp_enqueue_style ('maincss',get_template_directory_uri (). '/Css/style.css',array (),time (),'all'); `Pretty nice, but better still, just use time() in the 4th parameter which is version. Which would give you: `wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), time(), 'all' ); `
- 0
- 2018-09-13
- Dave
-
Wenn Sie die Zeit als vierten Parameter verwenden,kann Chrome verwendet werden,um diese Versionbeizubehalten.Diesgiltinsbesondere dann,wenn Sie alles andere zwischenspeichern,während Sie aneiner Live-Site arbeiten.Auf diese Weise senden Sieeine "neue Datei" an Chrome,dieer verwenden würde,anstatt zu versuchen,diese "alte" Versionfüreinen bestimmten Zeitraumbeizubehalten (wiefür andere Ressourcenfestgelegt).Using time as the 4th parameter might cuase chrome to hold on to that version. This is especially true if your caching everything else while you work on a live site. This way you are submiting a "new file" to chrome which he would use instead of trying to keeps that "old" version for an amount of time (as set for other resources).
- 0
- 2018-09-13
- Sagive SEO
-
Nein,funktioniertgutin Chrom,ich habeesgesternbenutzt.Nope, works fine in chrome, I was using it yesterday.
- 0
- 2018-09-14
- Dave
-
Dasbedeutet,dass Siein Ihrem htaccess oder überein Plugin keine Cache-/Ablaufzeitfestgelegt haben.Aber was auchimmerfür dichfunktioniert;)that means you havent set cache / expiration time in your htaccess or via a plugin. But, whatever works for you ;)
- 0
- 2018-09-14
- Sagive SEO
-
- 2012-01-30
Diesmag zueinfacherscheinen,aber wie wärees,wenn Sienur das Caching deaktivieren,bis Siemit dem Entwicklungsteil Ihrer Sitefertig sind?Das Ein- und Ausschaltenistmehr alseinfach.
This might seem overly simple, but how about just disabling caching until you're done with the development portion of your site? It's more than simple to turn on and off.
-
+1 - Ich verwende die Symbolleiste "Web Developer"für Firefox,mit der Sie den Cache (unter anderem) sehr schnell deaktivieren können.+1 - I use "Web Developer" toolbar for Firefox, allows you to very quickly disable cache (among other things)
- 2
- 2012-01-30
- Shane
-
Danke -mussnur der Cache des Browsers deaktiviert werden?Wird WP SuperCache weiterhin dazuführen,dass zwischengespeicherte Inhaltebereitgestellt werden?Sogarmein DNS-Dienst wird zwischengespeichert,daherbin ichmirnicht sicher,obichjeden Cache (WP,Browser,DNS usw.) separat deaktivierenmuss.Thanks - is it only necessary to disable the browser's cache? Will WP superCache still result in providing cached content? Even my DNS service caches, so I am uncertain if I need to disable every cache (WP, browser, DNS, etc) separately.
- 0
- 2012-01-30
- cboettig
-
Sorta hängt davon ab,dass Sie damit herumspielen und herausfindenmüssen,was Siefür Ihre Konfigurationtunmüssen.Sorta depends, you'll have to play around with it and figure out what you need to do for your configuration.
- 0
- 2012-01-30
- mor7ifer
-
Ichbin beiihm,deaktiviereeseinfach,dasist wasichtue.Im with him, just disable it, thats what I do.
- 0
- 2012-01-30
- matt
-
- 2012-02-01
Ich weiß,dassfür diese Frageeine Antwort akzeptiert wurde,aberich denke,dass diese Antwortfür das vorliegende Problemimmernoch zu kompliziertist undje nach Benutzermöglicherweisefalschist (allerdings keine Beleidigung). Ichteileimmernochmit,wieich das Caching umgehen kann,wennichmeinen Entwicklermache (nichtnurmit Wordpress).
Diemeistenmodernen Browser haben den sogenannten Inkognito-Modus . In diesem Modus wirdnichts auf Ihrem Computer zwischengespeichert,sodassbei jeder Aktualisierungein neuer Slate-Download vom Servererfolgt. In Internet Explorer drücken Sie
Ctrl + Shift + P
. In Firefox und Chrome drücken SieCtrl + Shift + N
.Wenn Ihr Browser keinen Inkognito-Modus hat,können Sienormalerweiseein hartes Neuladenerzwingen,indem Sie
Ctrl + F5
für IE oderCtrl + Shift + R
in Firefox drücken und Chrome.Ihre Frage zu den CSS-Dateien (undim Wesentlichen zu allen Asset-Dateien wie Bildern und Javascript-Dateien) wird von WP Super Cachein keiner Weise zwischengespeichert. Ihre Einstellungen und/oder die Verwendung dieses Plugins haben keinen Einfluss darauf,wie diese Dateienbereitgestellt werden. Was diese Dateien zwischenspeichert,ist Ihr Browser ,und dasist der Grund,warum Sieein hartes Neuladen durchführen.
Das Plugin wertet aus,wie Wordpress Ihre HTML-Dateienerstellt (über PHP) und speicherteine Kopie,sodass dasnächste Mal,wennjemand denselben Beitrag,dieselbe Seite oder was auchimmer anfordert,die Kopiebereitstellt undgewinnt. ' Siemüssen den von PHPgenerierten HTML-Codenichterneutbewerten und sparen somit Rechenzeit,da Ihre Seiten viel schnellergeladen werden. (Ich hoffe dasist klar.)
Das Problem dabeiist,dass,wenn Sie übereine PHP-Funktion aufeinen Zeitstempelin der URL Ihrer CSS-Dateien klicken, eine PHP-Bewertungfür HTMList und wird von WP Super Cache zwischengespeichert. Jede Anfrage an denselben Beitrag hat denselben Zeitstempel,da den Benutzerneine Kopie der ursprünglichen Zeitstempelbewertung zugestellt wird. (Korrigieren Siemich,wennichfalsch liege.)
Der richtige Weg,um das Caching von WP Super Cache zu umgehen,besteht darin,die Option
Don't cache for known users
auf der Einstellungsseite des Plugins auftrue
zu setzen.Schließlich (und diesisteine persönliche Präferenz,daichbeim Codierenein echter Sticklerbin)müssen Sie keine unnötigen Markups auf Ihren HTML-Seiten hinzufügen,wenn Sie auf Inkognito odererzwungenes hartes Nachladen zurückgreifen. Natürlichfügt das Hinzufügeneines Zeitstempelsnur ungefähr 13 Bytespro statischer Dateipro Anforderung hinzu,aber hey,wiegesagt,ichbin ein Sticklerfür diese Art von Sachen. Es sindimmernoch 13 Bytes unnötig.
I know that this question has had an answer accepted, but I think that that answer is still too complicated for the problem at hand, and may actually be incorrect depending on the user (no offense though), so I thought I'd still share how I bypass caching when I do my dev (not just with Wordpress).
Most modern browsers have something called incognito mode. In this mode, nothing in your computer is cached, so every refresh is a fresh slate download off the server. In Internet Explorer you press
Ctrl + Shift + P
. In Firefox and Chrome, you pressCtrl + Shift + N
.If your browser doesn't have incognito mode, you can normally force a hard reload by pressing
Ctrl + F5
for IE, orCtrl + Shift + R
on Firefox and Chrome.As for your question regarding the CSS files (and essentially, all your asset files, like images and Javascript files), those aren't cached in any way by WP Super Cache. Your settings and/or use of this plugin does not affect how those files are served. What's caching those files are your browser, and that's the reason why you do a hard reload.
What the plugin does is it evaluates how Wordpress builds your HTML files (via PHP), and stores a copy, so that the next time someone requests the same post, page, or whatever, it serves the copy, and won't have to reevaluate the PHP-generated HTML again, and therefore save some computing time, loading your pages that much quicker. (I hope that's clear.)
The problem with that is, if you're slapping on a timestamp on your CSS files' URL via a PHP function, that is a PHP evaluation to HTML, and that will be cached by WP Super Cache. Every request to the same post will have the same timestamp because users are being served a copy of the original timestamp evaluation. (Correct me if I'm wrong.)
The correct way to bypass WP Super Cache's caching is to set the option
Don't cache for known users
totrue
in the plugin's setting page.Finally (and this is a personal preference, as I'm a real stickler when it comes to coding), resorting to the use of incognito or forced hard reloads won't require you to add unnecessary markup on your HTML pages. Of course, adding a timestamp only adds about 13 bytes per static file per request, but hey, like I said, I'm a stickler for this kind of stuff. It's still 13 bytes unnecessary.
-
Dankefür dienützlichen Tipps.Leideristin meinem Fall keine der Antworten hier richtig,dafürmeine Lösung der Cache des Domain Network Service-Anbieters Cloudflaregeleert werdenmusste,aber viele warenimmernochgute Informationen.Thanks for the useful tips. Unfortunately none of the answers here are correct in my case, since my solution required clearing the cache of the Domain Network Service provider, cloudflare, but many were still good information.
- 0
- 2012-02-01
- cboettig
-
- 2012-01-30
Meine Güte,viele Möglichkeiten,diese Frage zubeantworten! Inerster Linie haben Sienach zwei verschiedenen Dingengefragt: WP Super Cache- und CSS-Dateien. Diese werden an verschiedenen Stellen unterschiedlich zwischengespeichert. Daheristes wichtig zuerkennen,wo sich Ihr Problembefindet.
Wenn WP Super Cache,können Sie die Konstante
DONOTCACHEPAGE
in Ihrerfunctions.php während der Entwicklung definieren,um zu verhindern,dass WP Super Cacheirgendetwas zwischenspeichert. Vergessen Siejedochnicht,diesbeim Start zuentfernen!define('DONOTCACHEPAGE', true);
Jede Site verfügt außerdem übereinen eindeutigen Schlüssel zum Anhängen an die URL,umeine neue Version der Seite zu laden,die Siemeines Erachtens auf der Registerkarte "Erweitert"finden.
Umeine nochbessere Lösung zufinden,sollten Sieeine Entwicklungsumgebung undeine Produktionsumgebungeinrichten,in derin Ihrer Entwicklungsumgebung WP Super Cachenicht aktiviertist (vorausgesetzt,diesist Ihr Problem).
Wenn Sie Problememit CSS/JS-Dateien haben,lesen Sie die Antwort vontoscho und dennachfolgenden Kommentar vonm0r7if3r oben.
Gosh, many ways to answer this one! First and foremost, you asked about two different things: WP Super Cache and CSS files. These are cached differently, in different places, so it's important to recognize where your problem is.
If WP Super Cache, you can define the constant
DONOTCACHEPAGE
in your functions.php during development to prevent WP Super Cache from caching anything. Don't forget to remove this on launch though!define('DONOTCACHEPAGE', true);
Each site also has a unique key to append to the URL to load a fresh version of the page, which you can find in the "Advanced" tab, I believe.
Breaking it down to an even better solution, you should consider setting up a development environment and a production environment, where your development environment doesn't have WP Super Cache enabled (again, assuming that's your problem).
If your issue is with CSS/JS files, then see the answer by toscho and subsequent comment by m0r7if3r above.
-
-
Dafürgibt eseine Option,ja.There is an option for that, yes.
- 0
- 2012-01-30
- Matthew Boynes
-
-
- 2012-01-31
Wenn Sie Chrome verwenden (wasich sehrempfehle),öffnen Sie den Inspektor,klicken Sie auf das Einstellungssymbolin der unteren rechten Ecke und wählen Sie unter "Netzwerk" die Option "Cache deaktivieren".
If you're using Chrome (which I highly suggest), open Inspector, click the settings icon in the lower right corner, and under "Network" select "Disable Cache."
-
- 2017-03-04
Wiegesagtfür wp Super Cache,aberfür allgemeines WP Cachingin
wp-config.php
Ändern Sie dies:define( 'WP_CACHE', false );
Referenz: codex.wordpress.org
As said for wp super cache, but for general WP caching in
wp-config.php
Change to this:define( 'WP_CACHE', false );
Reference: codex.wordpress.org
-
Dies wareigentlich dieeinzige Lösungfür das Problem.Vielen Dank!This was actually the only solution to the problem. Thanks!
- 0
- 2020-04-08
- CoppolaEmilio
-
- 2017-10-20
Sie können dieses Snippet verwenden>
Beijedem Laden der Seite
wirdeine neue Version Ihres aktiven Themas CSS und JSgeneriertYou can use this snippet https://gist.github.com/jhayiwg/92bae4330aeb738a98022d7ab63ce9b1
It will generate new version of your active theme css and js every time you load the page
-
Bitteposten Sie die Antwort hier,einschließlich desgesamten relevanten Codes.Verwenden Sieexterne Websitesnur als Referenz.Ihr Beitrag sollteeine vollständige Antwortenthalten,ohne dass Sie zueiner anderen Website wechselnmüssen.Wenn die Websiteeines Drittanbieters ausfällt,ist Ihre Antwortnicht sinnvoll.Please, post the answer here, including all the relevant code. Use external sites only for reference. Your post should provide a full answer without the need to go to other site; if the third party site goes down, your answer will be unuseful..
- 0
- 2017-10-20
- cybmeta
Gibteseine einfache Möglichkeit,das Zwischenspeichern zu verhindern,wenn das Erscheinungsbild von Änderungen an der Sitegetestet wird?Ichbenutze WP Super Cache.Ich kann den Cachemit der angegebenen Option löschen,den Cachefürmeinen Browser löschen und dennocheinige Änderungen an CSS oder Widgetsnicht aktualisieren.Ichprobiere andere Workarounds aus,z. B. das Wechseln von Browsern oder Computern,aberesmusseinen optimierten Workflowgeben,in demich sicherstellen kann,dassich die vorgenommenen Änderungen undnichtein zwischengespeichertesfrüheres Format ansehe.Wasist diebeste Lösung dafür?