Come si evita la memorizzazione nella cache durante lo sviluppo?
-
-
Sembra che ci siano anche [diversiplugin] (http://wordpress.org/extend/plugins/css-cache-buster) soloperfarloperi CSS.È davveronecessario?Queipluginfanno qualcosa che la cancellazione della cache delbrowsernonfa?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
-
Nelmio caso si è scoperto che dovevo svuotare la cache creata dalprovider DNS (cloudflare).Grazie atuttiperi suggerimenti di seguito.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
-
Utilizzoilbrowser Chrome;La suafinestra dinavigazionein incognito è utile,quandomi imbattoin problemi di cache a livello dibrowser durante lo sviluppo.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
-
Spero che questopluginti aiuti: 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 risposta
- voti
-
- 2012-01-30
Aggiungi
filemtime()
deltuofoglio di stile comeparametro di versione. Diciamo cheiltuofoglio di stilepredefinito èincss/default.css
ecss/default.min.css
(nonstyle.css
). Quando registriamo unfoglio di stile suwp_loaded
(noninit
),possiamopassare una versione come quartoparametro. Questa sarà l'ora dell'ultimamodificae quindi cambierà ogni volta che cambiamoilfile.$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 ); });
Se utilizzi Node.jse Grunt,ti consiglio vivamente di Browsersync . Guarderài tuoifilee li aggiorneràistantaneamente ogni volta che cambiano. Può anche sincronizzare laposizione di scorrimento,l'invio dimodulie altro supiùbrowser aperti. Moltobello.
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.
-
Graziemolto.Sembra che questo sia anche l'approccio delplugin sopra.Non ha risoltoilproblemanelmio casoperchéilmioprovider DNS (CloudFlare) stavamemorizzandonella cacheilfile css,quindi ho dovuto svuotare la cache lì -immagino chenon ci sia unmodo sempliceper aggirarlo.Ingenerale,però,penso che questa sia lamigliore risposta a questotipo diproblema,quindi contrassegnerò come accettato.Grazie ancora.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
-
Perchénon usiiltuofoglio di stile locale durante lo sviluppo?Why don’t you use your local stylesheet during development?
- 0
- 2012-01-31
- fuxia
-
Alcuni servizi di cloud cachingmemorizzerannoilfilenella cacheperpiù di 8 ore,quindi ènecessario richiederliperimplementare un serviziomiglioreperil controllo delle versioni (alcuni lofanno),modificarei servizi o smettere di utilizzarli.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 ha un'impostazione dellamodalità dev cheinterromperà lamemorizzazionenella cacheper unafinestra di 3 ore.Quindi riprende automaticamente lamemorizzazionenella cache dopo 3 ore.@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
Dopo aver cercatomolte volte una soluzione semplice,ho deciso ditrovare qualcosa chefunzionasse!
quindi ... dopo avercipensato hotrovato un ottimomodoper sovrascrivereil caching durante lo sviluppo dinuovi siti web ... (ed èfacile).
Ciò di cui abbiamobisogno è dire a wp che questa è unanuova versione CSS come questa ...
Prima dellemodifiche:
wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), false, 'all' );
Dopo lemodifiche:
wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css?v='.time(), array(), false, 'all' );
Questo è ciò che abbiamo aggiunto:
?v='.time()
Spiegazione:
Fondamentalmente stiamo aggiungendo unnumero di versione dinamico alfile css cheforzailbrowser a caricareilnuovo css ogni volta che lo aggiorniamo.Non dimenticare di rimuoverlo dopo aver completato lo sviluppo,altrimenti lamemorizzazionenella cachenonfunzioneràper questofilee verrebbe caricata ripetutamentepergli utenti di ritorno.
Questatecnicafunzionaper css & amp;js - spero che questo aiuti;)
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 ;)
-
Abbastanza carino,ma ancorameglio,usa solotime ()nel quartoparametro che è version.Il cheti darebbe: `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
-
Usareiltempo come quartoparametropotrebbefar sì che Chromemantenga quella versione.Ciò èparticolarmente vero sememorizzinella cachetuttoil restomentre lavori su un sito live.In questomodo staiinviando un "nuovofile" a Chrome che userebbeinvece diprovare amantenere quella "vecchia" versioneper un certoperiodo ditempo (comeimpostatoper altre risorse).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
-
No,funzionabene con Chrome,lo stavo usandoieri.Nope, works fine in chrome, I was using it yesterday.
- 0
- 2018-09-14
- Dave
-
ciò significa chenon haiimpostato l'ora della cache/scadenzaneltuo htaccess otramite unplugin.Ma qualunque cosafunzioniperte;)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
Potrebbe sembrareeccessivamente semplice,ma chene dici di disattivare lamemorizzazionenella cachefinchénon haifinito con laparte di sviluppo deltuo sito?Èpiù che semplice da attivaree disattivare.
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 - Uso labarra degli strumenti "Web Developer"per Firefox,consente di disabilitaremolto rapidamente la cache (tra le altre cose)+1 - I use "Web Developer" toolbar for Firefox, allows you to very quickly disable cache (among other things)
- 2
- 2012-01-30
- Shane
-
Grazie,è solonecessario disabilitare la cache delbrowser?WP superCache continuerà afornire contenutomemorizzatonella cache?Ancheilmio servizio DNS èin cache,quindinon sono sicuro di dover disabilitare ogni cache (WP,browser,DNS,ecc.) Separatamente.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 dipende,dovraigiocarcie capire cosa devifareper latua configurazione.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
-
Sono con lui,disabilitaloe basta,ecco cosafaccio.Im with him, just disable it, thats what I do.
- 0
- 2012-01-30
- matt
-
- 2012-02-01
So che a questa domanda è stata accettata una risposta,mapenso che quella risposta sia ancoratroppo complicataperilproblemain questionee potrebbeeffettivamenteessereerrata a seconda dell'utente (senza offesa),quindi hopensato di " Condivido ancora comebypassare la cache quandofaccioilmio sviluppo (non solo con Wordpress).
Lamaggiorparte deibrowsermoderni dispone di unafunzione chiamata modalità dinavigazionein incognito . In questamodalità,nullaneltuo computer vienememorizzatonella cache,quindi ogni aggiornamento è unnuovo download dal server. In Internet Explorerpremi
Ctrl + Shift + P
. In Firefoxe Chrome,premiCtrl + Shift + N
.Seiltuobrowsernon ha lamodalità dinavigazionein incognito,puoinormalmenteforzare un ricaricamentoforzatopremendo
Ctrl + F5
per IE oCtrl + Shift + R
su Firefoxe Chrome.Per quanto riguarda latua domanda suifile CSS (ein sostanza,tuttii tuoifile di risorse,comeimmaginie file Javascript),quellinon sonoin alcunmodomemorizzatinella cache da WP Super Cache. Letueimpostazionie/o l'utilizzo di questoplug-in non influiscono sullamodalità di offerta ditalifile. Ciò chememorizza questifilenella cache èiltuobrowser ed èper questomotivo cheesegui un duro caricamento.
Ciò chefailplugin è valutare come Wordpress costruiscei tuoifile HTML (tramite PHP)e memorizza una copia,in modo che laprossima volta che qualcuno richiede lo stessopost,pagina o qualsiasi altra cosa,serva la copiae vinca ' Non devi rivalutare dinuovo l'HTMLgenerato da PHP,e quindi risparmiare unpo 'ditempo dielaborazione,caricando letuepaginemoltopiù velocemente. (Spero sia chiaro.)
Ilproblema è che,se stai applicando untimestamp all'URL deituoifile CSStramite unafunzione PHP,quella è una valutazione PHPin HTMLe quella esserememorizzatonella cache da WP Super Cache. Ogni richiesta allo stessopost avrà lo stessotimestampperché agli utenti viene offerta una copia della valutazione deltimestamp originale. (Correggimi se sbaglio.)
Ilmodo correttoperbypassare lamemorizzazionenella cache di WP Super Cache èimpostare l'opzione
Don't cache for known users
sutrue
nellapagina delleimpostazioni delplug-in.Infine (e questa è unapreferenzapersonale,dato che sono un veropignolo quando sitratta di codifica),il ricorso all'uso diincognito o ricaricamentiforzatinon richiederà l'aggiunta dimarkupnonnecessari alletuepagine HTML. Ovviamente,l'aggiunta di untimestamp aggiunge solo circa 13byteperfile staticoper richiesta,ma hey,come ho detto,sono unpignoloper questogenere di cose. Sono ancora 13bytenonnecessari.
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.
-
Grazieperi suggerimenti utili.Sfortunatamentenessuna delle risposte qui è correttanelmio caso,poiché lamia soluzione richiedeva di svuotare la cache delprovider di servizi di rete di dominio,cloudflare,mamolteerano ancorabuoneinformazioni.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
Accidenti,moltimodiper rispondere a questo! Prima ditutto,hai chiestoinformazioni su due cose diverse: WP Super Cachee file CSS. Questi vengonomemorizzatinella cachein modo diverso,in luoghi diversi,quindi èimportante riconoscere dove sitrovailproblema.
Se WP Super Cache,puoi definire la costante
DONOTCACHEPAGE
neltuofunctions.php durante lo sviluppoperimpedire a WP Super Cache dimemorizzarenella cache qualsiasi cosa. Non dimenticare di rimuoverlo all'avvio!define('DONOTCACHEPAGE', true);
Ogni sito ha anche una chiave univoca da aggiungere all'URLper caricare unanuova versione dellapagina,chepuoitrovarenella scheda "Avanzate",credo.
Rompendolain una soluzione ancoramigliore,dovrestiprenderein considerazione la creazione di un ambiente di sviluppoe un ambiente diproduzione,in cuiiltuo ambiente di svilupponon ha WP Super Cache abilitato (dinuovo,supponendo che siailtuoproblema).
Seiltuoproblema riguardai file CSS/JS,leggi la risposta ditoschoe il successivo commento dim0r7if3r sopra.
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.
-
-
C'è un'opzioneper questo,sì.There is an option for that, yes.
- 0
- 2012-01-30
- Matthew Boynes
-
-
- 2012-01-31
Se utilizzi Chrome (cosa che consiglio vivamente),apri Inspector,fai clic sull'icona delleimpostazioninell'angoloin basso a destrae in "Rete" seleziona "Disattiva 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
Come dettoper wp super cache,maper lamemorizzazionenella cache WPgeneralein
wp-config.php
Cambiain questo:define( 'WP_CACHE', false );
Riferimento: 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
-
Questaerain realtà l'unica soluzione alproblema.Grazie!This was actually the only solution to the problem. Thanks!
- 0
- 2020-04-08
- CoppolaEmilio
-
- 2017-10-20
Puoi utilizzare questo snippet https://gist.github.com/jhayiwg/92bae4330aeb738a980a9d7<>
Genererà unanuova versione deltuotema attivo csse js ogni volta che carichi lapagina
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
-
Perfavore,inserisci la risposta qui,inclusotuttoil codicepertinente.Utilizza sitiesterni solo come riferimento.Iltuopost dovrebbefornire una risposta completa senza lanecessità di andare su un altro sito;seil sito diterzepartinonfunziona,latua rispostanon sarà utile.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
Esiste unmodo sempliceperimpedire lamemorizzazionenella cache duranteiltest dell'aspetto dellemodifiche al sito?Uso WP Super Cache.Possoeliminare la cache utilizzando l'opzionefornita,eliminare la cacheperilmiobrowsere tuttavia alcunemodifiche a CSS o widgetnon vengono aggiornate.Provo altre soluzioni alternative come cambiarebrowser o computer,ma deveesserci unflusso di lavoropiù snelloin cuiposso assicurarmi di visualizzare lemodifiche apportatee non qualcheformatoprecedentememorizzatonella cache?Qual è la soluzionemiglioreper questo?