Come disattivare completamente la memorizzazione nella cache?


26

Sto sviluppando un sito in Drupal 7 e la memorizzazione nella cache rallenta significativamente il mio lavoro. Ad esempio, avevo una funzione tematica per un modulo. Ero perplesso, perché non funziona. Fino a quando ho cancellato la cache ed è stato risolto.

Come spegnerlo completamente?

Risposte:


21

Le funzioni del tema sono gestite dal registro dei temi: la ricostruzione (o peggio, la disabilitazione) di tutte le cache del sito per raccogliere una nuova funzione del tema non è necessaria e eccessiva.

Quello che puoi fare è usare il modulo Devel per ricostruire il registro del tuo tema ad ogni ricarica della pagina. Una volta installato, vai a Configurazione → Sviluppo → Impostazioni di sviluppo. Qui, seleziona "Ricostruisci il registro temi su ogni caricamento di pagina" e premi il pulsante "Salva configurazione". Ricorda di deselezionarlo (o meglio ancora, disabilitare Develop completamente) quando hai finito con lo sviluppo.


questo è però solo il registro dei temi.
Andrew Welch,

2
La domanda è "Come spegnerlo completamente?" questa è solo una parte
SeanJA

29

È possibile sostituire il backend della cache predefinito con uno che in realtà non fa nulla. Aggiungilo semplicemente al tuo file settings.php:

if (!class_exists('DrupalFakeCache')) {
  $conf['cache_backends'][] = 'includes/cache-install.inc';
}
// Default to throwing away cache data.
$conf['cache_default_class'] = 'DrupalFakeCache';
// Rely on the DB cache for form caching - otherwise forms fail.
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';

Per sicurezza, imposta il tempo di scadenza della cache su nessuno nella pagina Prestazioni.

In realtà lo uso in un file settings.local.php che, se esiste, viene incluso nella parte inferiore del mio file settings.php in modo da poter sincronizzare settings.php dagli ambienti live o di gestione temporanea al mio ambiente di sviluppo senza doversi preoccupare sull'utilizzo delle impostazioni del database errate, spingendo accidentalmente le impostazioni di sviluppo per vivere, ecc.

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}

4
Puoi usare lo stesso trucco per disattivare la memorizzazione nella cache per cestino. Per esempio. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Alfred Armstrong,

4
Questa dovrebbe essere la risposta accettata, poiché quella accettata descrive solo come disabilitare la cache del registro dei temi e non tutte le cache
mastazi

10

Non è possibile attivare su tutto il caching completamente. E se effettivamente fatto, sarebbe rallentare il progresso così molto di più. Considera il tempo impiegato per svuotare effettivamente la cache, ecco come sarebbe ogni singolo caricamento della pagina.

Esistono così tanti hook in esecuzione per la creazione di informazioni su entità, campi, moduli, hook implementati ecc. Disponibili che devono essere eseguiti solo una volta al momento, non si vuole impedirlo.

Man mano che ti abituerai a Drupal, imparerai presto quali cose richiedono una cache libera e probabilmente drush cc alldiventerai amichevole con il collegamento dei menu di amministrazione o , e questo non sarà più un problema.


D'accordo, una volta che ti rendi conto che la maggior parte dei nuovi hook ha bisogno di svuotare la cache prima di essere riconosciuta la sua navigazione regolare da lì in poi! :)
Alex Weber,

2
Onestamente dopo alcuni mesi di sviluppo di Drupal trovo ancora che questo sia un problema. Credo che mentre lo sviluppo della velocità locale non è importante, non hai più utenti che inviano richieste simultanee. Nella maggior parte degli altri framework (Django, Symfony ecc.) La disabilitazione della cache durante lo sviluppo locale è un'opzione facilmente disponibile, non vedo il motivo per cui non posso averlo anche in Drupal. Ogni giorno ho almeno un'istanza in cui qualcosa non funziona e il motivo è che ho dimenticato di pulire la cache, succede molto spesso e mi dà davvero fastidio.
Mastazi,

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.