Posso disattivare la cache per la distribuzione dello sviluppo?


22

Sulla piattaforma di sviluppo la memorizzazione nella cache può essere un dolore. Posso spegnerlo? Interesserà qualcuno dei moduli che lo richiedono?

Risposte:


19

Installa il modulo di sviluppo che aggiunge un'opzione di cancellazione della cache per gli amministratori. Troverai un blocco di sviluppo da aggiungere a una regione per svuotare rapidamente la cache o se installi il menu di amministrazione e ottieni un menu rapido in alto a sinistra per svuotare varie cache in Drupal.

Se ti piace la riga di comando installa drush e usa il drush cc allcomando per cancellare le cache dei siti. Fai attenzione che al momento Drush cc non cancella la cache di Varnish, se applicabile alla tua configurazione.


9

Se si utilizza Drupal 7, è sempre possibile impostare la memorizzazione nella cache su DrupalFakeCache, che viene normalmente utilizzato solo durante il processo di installazione. Per impostarlo, rilascia il seguente frammento di codice in settings.php:

include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';

4

La pagina "Prestazioni" in amministrazione> configurazione del sito ti consentirà di abilitare / disabilitare la memorizzazione nella cache degli elementi del sito selezionati. I modelli di temi sono in genere memorizzati in modo più persistente, ma possono essere scaricati nella stessa pagina "prestazioni".

Il modulo "Menu di amministrazione" fornirà un collegamento in una barra degli strumenti se gli svuotamenti della cache devono essere eseguiti più regolarmente - durante lo sviluppo del tema mi ritrovo a scaricare costantemente.


4

Per quanto ne so non ci sono moduli che richiedono la memorizzazione nella cache. Se non si desidera disattivarlo, è possibile cancellarlo nella Site Settings > Performancesezione.

Anche con la cache disabilitata, Drupal non riconoscerà i nuovi file aggiunti ai temi finché non si cancella la cache.

Ci sono alcune informazioni su diversi modi per cancellare la cache su Drupal.org


4

Oltre ai metodi citati da Steve H , l'uso del modulo Devel apre alcune altre opzioni, tra cui:

  • Ricostruzione della cache dei temi ad ogni caricamento della pagina (utile se sei un tematico che lavora su file modello)
  • Un blocco che fornirà un facile accesso alla funzione cache vuota e alla funzione di reinstallazione.

Con il modulo Devel e la memorizzazione nella cache disattivati ​​in Prestazioni , l'unica altra cache importante in cui ti imbatterai nello sviluppo di routine è il router di menu, che può essere ricostruito utilizzando il menu Devel o Admin come menzionato da Steve.


4

Una cosa importante da notare è che se hai molti fogli di stile (sia dal tuo tema che dai moduli), la disattivazione dell'ottimizzazione dei file CSS ha il potenziale per interrompere il tuo sito in IE.

Pur non essendo effettivamente memorizzato nella cache, si trova nella stessa pagina delle impostazioni ed è spesso utilizzato con la memorizzazione nella cache.

A proposito, il link "Svuota tutte le cache" nel modulo del menu di amministrazione è fantastico.


Se sei preoccupato per IE, puoi usare drupal.org/project/ie_css_optimizer
realityloop

3

Se stai usando Drupal 6, il modulo " Disabilita cache " può essere utile per quell'attività se non desideri [per qualche motivo] installare moduli più pesanti come Develop.


2

Vecchia domanda, ma l'ho appena vista spuntare come correlata a una ricerca che stavo facendo.

Quasi tutti i metodi di svuotamento della cache finiscono per chiamare drupal_flush_all_caches alla fine. Puoi giocare chiamando questo in varie circostanze nel tuo codice.


2

La quantità di cache utilizzate con Drupal a volte può impazzire.

Ecco i metodi comuni per disabilitare e cancellare le cache di Drupal e ad esse associate.


DISATTIVAZIONE DELLE CACHES:

Nota che non puoi disabilitare tutte le cache, in quanto alcune sono richieste da Drupal.

Ecco un metodo per disabilitare le cache aggiungendo le seguenti righe nel file delle impostazioni:

// Disable caches
$conf['cache'] = 0;
$conf['block_cache'] = 0;
$conf['views_skip_cache'] = TRUE;
$conf['page_compression'] = 0;
$conf['preprocess_css'] = 0;
$conf['preprocess_js'] = 0;

Se disabiliti tutte le tue cache, il tuo sito web sarà molto lento, quindi non è raccomandato per altri ambienti esenti dalla tua macchina di sviluppo.


PULIZIA DELLE CACHI

XCache

Cancella cache XCache se utilizzato:

drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"

Oppure svuota la cache in XCache nel pannello di amministrazione (/ xcache-admin) se sopra non funzionerà.

eAccelerator

drush eval "function_exists('accelerator_reset') && accelerator_reset();"

APC

drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"

OPCache

Cancella PHP OPCache se si utilizza con PHP> = 5.5

drush eval "function_exists('opcache_reset') && opcache_reset();"

Nota: il comando CLI sopra non cancella la cache per Apache, secondo Opcache : pulisce la cache in PHP5.4 e versioni precedenti .

memcached

Se stai usando memcached, dovresti cancellare, riavviare o uccidere memcached con uno dei metodi:

Come utente (uno di questi):

echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server

Come root (uno di questi):

/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.

Si consiglia inoltre di installare il modulo memcached con la seguente riga nel file delle impostazioni:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';

Quindi le cache memorizzate vengono cancellate nella cache di cancellazione standard Drupal.

Vernice

Se stai usando Varnish, si consiglia di installare il modulo Varnish e impostare la seguente riga nel file delle impostazioni:

$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';

Quindi la cache di Varnish verrebbe svuotata insieme nella cache di cancellazione di Drupal.

In alternativa puoi usare l'arricciatura per cancellare manualmente le pagine:

curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123

Per saperne di più: come posso cancellare la cache di Varnish?

Drupal

Cancella cache Drupal tramite Drush:

drush cc all
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
drush eval 'menu_rebuild();'

Puoi fare lo stesso su / admin / config / development / performance, poiché a volte le cache dell'interfaccia utente vengono cancellate nel modo migliore rispetto alla CLI.


Ecco l'utile script della shell per cancellare tutte le cache:

#!/bin/bash
set -o xtrace
echo "SHOW TABLES LIKE 'cache%'" | $(drush sql-connect) | tail -n +2 | xargs -L1 -I% echo "DELETE FROM %;" | $(drush sql-connect) -v
echo 'flush_all' | nc localhost 11211 # Flush Contents Of a Memcached Server
drush eval "function_exists('opcache_reset') && opcache_reset(); function_exists('xcache_clear_cache') && xcache_clear_cache();"
drush eval 'menu_rebuild();'
set -o xtrace -
echo done.

3
L'OPCache non funziona da CLI, ad esempio, vedere spiegazione su: stackoverflow.com/questions/17716639/...
LARS

0

possiamo usare uno dei seguenti metodi per cancellare la cache in drupal

1.) Possiamo semplicemente visitare url your_domain / admin / config / development / performance e fare clic sul pulsante Cancella cache.

2.) Se abbiamo installato il modulo drush possiamo cancellare la cache da questo drush cc all comando .

3.) Se abbiamo accesso al database possiamo cancellare la cache con i seguenti comandi (l'accesso diretto a un database di produzione è decisamente sconsigliato; utilizzare invece una delle alternative se il tuo sito è "attivo")

TRUNCATE TABLE cache;

TRUNCATE TABLE cache_block;

TRUNCATE TABLE cache_bootstrap;

TRUNCATE TABLE cache_field;

TRUNCATE TABLE cache_filter;

TRUNCATE TABLE cache_form; // nota differenze importanti rispetto alle altre tabelle cache_ * - vedi ulteriori informazioni di seguito

TRUNCATE TABLE cache_image;

TRUNCATE TABLE cache_menu;

TRUNCATE TABLE cache_page;

TRUNCATE TABLE cache_path;

TRUNCATE TABLE cache_token;

TRUNCATE TABLE cache_update;

4.) Possiamo anche scrivere query nel nostro file del modulo db_query ("DELETE FROM {cache};");

5.) Possiamo usare api drupal per cancellare la cache come cache_clear_all ()

6.) Possiamo anche cancellare la cache dal modulo di sviluppo installare il modulo di sviluppo e abilitare il "Blocco sviluppatore / sviluppo" in questo modo possiamo cancellare la cache

Ulteriori informazioni su cache_form, che ha uno scopo diverso rispetto alle altre tabelle cache_ :

  • i principali documenti API per drupal_flush_all_caches () dicono "Non cancellare cache_form - l'invio di moduli in corso potrebbe interrompersi." Questa preoccupazione si applica solo ai siti con utenti attivi e non alle versioni di sviluppo.

  • altri metodi manuali per cancellare le cache descritti in questo post non influenzeranno cache_form

  • se è necessario ridurre la dimensione di cache_form in un sito di produzione, vedere La dimensione della tabella del modulo cache è enorme

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.