Comment éviter la mise en cache pendant le développement?
-
-
Il semble qu'il y ait aussi [plusieursplugins] (http://wordpress.org/extend/plugins/css-cache-buster)justepourfaire celapour CSS.Est-ce vraimentnécessaire?Cespluginsfont-ils quelque chose que la suppression du cache dunavigateurne faitpas?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
-
Dansmon cas,il s'est avéré queje devaiseffacer le cache créépar lefournisseur DNS (cloudflare).Merci àtouspour les suggestions ci-dessous.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
-
J'utilise lenavigateur Chrome;Safenêtre denavigationprivéeestpratique lorsqueje rencontre desproblèmes de cache auniveau dunavigateurpendant le développement.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
-
J'espère que ceplugin vous aidera: 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 réponses
- votes
-
- 2012-01-30
Ajoutez le
filemtime()
de votrefeuille de style commeparamètre de version. Disons que votrefeuille de stylepar défautest danscss/default.css
etcss/default.min.css
(passtyle.css
). Lorsquenousenregistrons unefeuille de style surwp_loaded
(pasinit
),nouspouvonspasser une version comme quatrièmeparamètre. Ce sera la dernièrefoismodifiéeet donc changer à chaquefois quenous changeons lefichier.$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 ); });
Si vous utilisez Node.jset Grunt,je vous recommande vivement Browsersync . Il surveillera vosfichierset lesmettra àjourinstantanément chaquefois qu'ils changent. Ilpeut également synchroniser laposition de défilement,les soumissions deformulaireset plusencore surplusieursnavigateurs ouverts. Très 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.
-
Mercibeaucoup.Il semble que ce soit également l'approche duplugin ci-dessus.Celan'apas résolu leproblème dansmon cas carmonfournisseur DNS (CloudFlare)mettaiten cache lefichier css,j'ai donc dû vider le cache là-bas -je suppose qu'iln'y apas demoyen simple de contourner cela.Engénéral cependant,je pense que c'est lameilleure réponse à cegenre deproblème,doncje vaismarquer comme accepté.Merciencore.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
-
Pourquoin'utilisez-vouspas votrefeuille de style localependant le développement?Why don’t you use your local stylesheet during development?
- 0
- 2012-01-31
- fuxia
-
Certains services demiseen cache dans le cloudmettronten cache dur votrefichierpendantplus de 8 heures,vous devez donc leur demander demettreen œuvre unmeilleur service degestion des versions (certains lefont),demodifier les services ou d'arrêter de les utiliser.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 a unparamètre demode de développement qui arrêtera lamiseen cachependant unefenêtre de 3 heures.Il reprendensuite automatiquement lamiseen cache après 3 heures.@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
Après avoir recherchéplusieursfois une solution simple,j'ai décidé detrouver quelque chose quifonctionne!
alors ... après y avoir réfléchi,j'aitrouvé unexcellentmoyen de remplacer lamiseen cachetouten développant denouveaux sites Web ... (et c'estfacile).
Ce dontnous avonsbesoinest de dire à wp qu'il s'agit d'unenouvelle version CSS comme celle-ci ...
Avant lesmodifications:
wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), false, 'all' );
Après lesmodifications:
wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css?v='.time(), array(), false, 'all' );
Voici ce quenous avons ajouté:
?v='.time()
Explication:
Nous ajoutonsessentiellement unnuméro de version dynamique aufichier css,ce qui oblige lenavigateur à charger lenouveau css à chaquefois quenous lemettons àjour.N'oubliezpas de le supprimer unefois le développementterminé,sinon votremiseen cachene fonctionnerapaspour cefichieret il se chargeraitencoreet encorepour les utilisateurs qui reviennent.
Cettetechniquefonctionnepour les css & amp;js -j'espère que cela vous aidera;)
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 ;)
-
Plutôt sympa,maismieuxencore,utilisez simplementtime () dans le 4èmeparamètre quiest la version.Ce qui vous donnerait: `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
-
Utiliser letemps comme 4èmeparamètrepourraitinciter Chrome à conserver cette version.Celaestparticulièrement vrai si vousmettezen cachetout le restependant que voustravaillez sur un siteen direct.De cettefaçon,vous soumettez un "nouveaufichier" à chrome qu'il utiliserait au lieu d'essayer de conserver cette "ancienne" versionpendant un certaintemps (comme définipour les autres ressources).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
-
Non,fonctionnebien en chrome,je l'utilisais hier.Nope, works fine in chrome, I was using it yesterday.
- 0
- 2018-09-14
- Dave
-
cela signifie que vousn'avezpas défini letemps de cache/expiration dans votre htaccess ou via unplugin.Mais,tout ce quifonctionnepour vous;)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
Celapeut semblertrop simple,mais que diriez-vous de désactiver lamiseen cachejusqu'à ce que vous ayezterminé lapartie développement de votre site?L'activationet la désactivation sontplus que simples.
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 - J'utilise labarre d'outils "Développeur Web"pour Firefox,permet de désactivertrès rapidement le cache (entre autres)+1 - I use "Web Developer" toolbar for Firefox, allows you to very quickly disable cache (among other things)
- 2
- 2012-01-30
- Shane
-
Merci -est-il seulementnécessaire de désactiver le cache dunavigateur?WP superCache aboutira-t-iltoujours à lafourniture de contenumisen cache?Mêmemon service DNSmet en cache,je ne sais doncpas sije dois désactiver chaque cache (WP,navigateur,DNS,etc.) séparément.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 dépend,vous devrezjouer avecet déterminer ce que vous devezfairepour votre configuration.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
-
Je suis avec lui,il suffit de le désactiver,c'est ce queje fais.Im with him, just disable it, thats what I do.
- 0
- 2012-01-30
- matt
-
- 2012-02-01
Je sais que cette question aeu une réponse acceptée,maisje pense que cette réponseestencoretrop compliquéepour leproblèmeen question,et peuten fait êtreincorrecteen fonction de l'utilisateur (sans offense cependant),alorsj'aipensé queje ' Je continue departager commentje contourne lamiseen cache lorsqueje faismon développement (pas seulement avec Wordpress).
Laplupart desnavigateursmodernes ont quelque chose appelé modeincognito . Dans cemode,aucun élément de votre ordinateurn'estmisen cache,de sorte que chaque actualisationest unnouveautéléchargement sur le serveur. Dans Internet Explorer,appuyez sur
Ctrl + Shift + P
. Dans Firefoxet Chrome,vous appuyez surCtrl + Shift + N
.Si votrenavigateurne disposepas dumodenavigationprivée,vouspouveznormalementforcer un rechargementmatérielen appuyant sur
Ctrl + F5
pour IE ou surCtrl + Shift + R
sur Firefoxet Chrome.Quant à votre question concernant lesfichiers CSS (etessentiellement,tous vosfichiers d'actifs,comme lesimageset lesfichiers Javascript),ceux-cine sonten aucun casmisen cachepar WP Super Cache. Vosparamètreset/ou l'utilisation de ceplugin n'affectentpas lamanière dont cesfichiers sont diffusés. Ce quimet cesfichiersen cache,c'est votrenavigateur ,et c'est la raisonpour laquelle vouseffectuez un rechargement dur.
Ce quefait leplugin,c'est qu'il évalue lafaçon dont Wordpress construit vosfichiers HTML (via PHP),et stocke une copie,de sorte que laprochainefois que quelqu'un demande lemêmemessage,lamêmepage ou autre,il sert la copieet gagne ' Vous devez ànouveau réévaluer le HTMLgénérépar PHP,et doncgagner dutemps de calcul,en chargeant vospagesbeaucoupplus rapidement. (J'espère que c'est clair.)
Leproblème avec celaest que si vous appliquez un horodatage sur l'URL de vosfichiers CSS via unefonction PHP,cela est une évaluation PHP vers HTML,et que sera êtremisen cachepar WP Super Cache. Chaque demande adressée aumême article aura lemême horodatage,car les utilisateurs reçoivent une copie de l'évaluation d'horodatage d'origine. (Corrigez-moi sije metrompe.)
Labonnefaçon de contourner lamiseen cache de WP Super Cacheest de définir l'option
Don't cache for known users
surtrue
dans lapage de configuration duplugin.Enfin (et c'est unepréférencepersonnelle,carje suis un vraibâtonen matière de codage),le recours à l'utilisation de lanavigationprivée ou des rechargesforcéesforcéesne vous obligerapas à ajouter unbalisageinutile sur vospages HTML. Bien sûr,l'ajout d'un horodatagen'ajoute qu'environ 13 octetsparfichier statiquepar requête,maisbon,commeje l'ai dit,je suis un sticklerpour cegenre de choses. C'esttoujours 13 octetsinutiles.
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.
-
Mercipour les conseils utiles.Malheureusement,aucune des réponsesicin'est correcte dansmon cas,carma solutionnécessitait de vider le cache dufournisseur de services de réseau de domaine,cloudflare,maisbeaucoup étaientencore debonnesinformations.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
Gosh,denombreusesfaçons de répondre à celle-ci! Tout d'abord,vous avezposé des questions sur deux choses différentes: WP Super Cacheet lesfichiers CSS. Ceux-ci sontmisen cache différemment,à différentsendroits,ilest doncimportant de reconnaître où se situe votreproblème.
Si WP Super Cache,vouspouvez définir la constante
DONOTCACHEPAGE
dans votrefunctions.phppendant le développementpourempêcher WP Super Cache demettreen cache quoi que ce soit. N'oubliezpas de le supprimer au lancement!define('DONOTCACHEPAGE', true);
Chaque site a également une clé unique à ajouter à l'URLpour charger unenouvelle version de lapage,que vouspouveztrouver dans l'onglet "Avancé",je crois.
Pouren faire une solutionencoremeilleure,vous devriezenvisager demettreen place unenvironnement de développementet unenvironnement deproduction,où votreenvironnement de développementn'apas activé WP Super Cache (encore unefois,en supposant que c'est votreproblème).
Si votreproblème concerne lesfichiers CSS/JS,consultez la réponsepartoschoet le commentaire suivant dem0r7if3r ci-dessus.
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.
-
-
Il y a une optionpour cela,oui.There is an option for that, yes.
- 0
- 2012-01-30
- Matthew Boynes
-
-
- 2012-01-31
Si vous utilisez Chrome (ce queje suggère vivement),ouvrez l'Inspecteur,cliquez sur l'icône desparamètres dans le coininférieur droit,et sous "Réseau",sélectionnez "Désactiver le cache".
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
Comme ditpour le super cache wp,maispour lamiseen cache WPgénérale dans
wp-config.php
Changerpour ceci:define( 'WP_CACHE', false );
Référence: 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
-
C'étaiten fait la seule solution auproblème.Merci!This was actually the only solution to the problem. Thanks!
- 0
- 2020-04-08
- CoppolaEmilio
-
- 2017-10-20
Vouspouvez utiliser cetextrait de code https://gist.github.com/jhayiwg/92bae4330aeb738a98022b<7ab98022d1>
Ilgénérera unenouvelle version de votrethème actif csset js à chaquefois que vous chargerez lapage
You 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
-
Veuillezposter la réponseici,y compristout le codepertinent.Utilisez des sitesexternes uniquement àtitre de référence.Votremessage doitfournir une réponse complète sans avoirbesoin d'aller sur un autre site;si le sitetierstombeen panne,votre réponse serainutile.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
Existe-t-il unmoyen simple d'empêchertoutemiseen cache lors dutest de l'apparence desmodifications apportées au site?J'utilise WP Super Cache.Jepeux supprimer son cacheen utilisant l'optionfournie,supprimer le cache demonnavigateuret certainesmodifications apportées au CSS ou aux widgetsne s'actualisenttoujourspas.J'essaie d'autres solutions de contournementtelles que le changement denavigateur ou d'ordinateur,maisil doit y avoir unflux detravailplus rationalisé oùje peuxm'assurer de visualiser lesmodifications quej'ai apportéeset non unformat antérieurmisen cache?Quelleest lameilleure solutionpour cela?