Wie kann ich das Caching vollständig deaktivieren?

26

Ich entwickle eine Site in Drupal 7 und das Zwischenspeichern verlangsamt meine Arbeit erheblich. Zum Beispiel hatte ich eine Theming-Funktion für ein Formular. Ich war verwirrt, warum funktioniert es nicht? Bis ich den Cache geleert habe und es behoben war.

Wie schalte ich es komplett aus?

user4035
quelle

Antworten:

21

Die Themenfunktionen werden von der Themenregistrierung verwaltet: Das Neuerstellen (oder, noch schlimmer, Deaktivieren) aller Caches Ihrer Site zum Aufrufen einer neuen Themenfunktion ist unnötig und übertrieben.

Sie können das Devel- Modul verwenden, um die Registrierung Ihres Themas bei jedem Seiten-Reload neu zu erstellen . Nach der Installation gehen Sie zu Konfiguration → Entwicklung → Entwicklungseinstellungen. Aktivieren Sie dort "Die Themenregistrierung bei jedem Laden der Seite neu erstellen" und klicken Sie auf die Schaltfläche "Konfiguration speichern". Denken Sie daran, das Kontrollkästchen zu deaktivieren (oder, noch besser, Devel vollständig zu deaktivieren), wenn Sie mit der Entwicklung fertig sind.


quelle
Dies ist jedoch nur die Themenregistrierung.
Andrew Welch
2
Die Frage ist "Wie kann ich es komplett ausschalten?" Dies ist nur ein Teil davon
SeanJA
29

Sie können das Standard-Cache-Backend durch ein Backend ersetzen, das eigentlich nichts tut. Fügen Sie dies einfach zu Ihrer settings.php-Datei hinzu:

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';

Um sicherzugehen, legen Sie auf der Seite Leistung die Cache-Ablaufzeit auf keine fest.

Ich verwende dies tatsächlich in einer settings.local.php-Datei, die, falls vorhanden, unten in meiner settings.php-Datei enthalten ist, damit ich settings.php von der Live- oder Staging-Umgebung mit meiner Entwicklungsumgebung synchronisieren kann, ohne dass ich mir Sorgen machen muss über die Verwendung der falschen Datenbankeinstellungen, das versehentliche Verschieben von Dev-Einstellungen usw.

settings.php:

if (file_exists(__DIR__ . '/settings.local.php')) {
  require_once __DIR__ . '/settings.local.php';
}
TwoD
quelle
4
Sie können den gleichen Trick verwenden, um die Zwischenspeicherung pro Bin zu deaktivieren. Z.B. $conf['cache_class_cache_metatag'] = 'DrupalFakeCache';
Alfred Armstrong
4
Dies sollte die akzeptierte Antwort sein, da die akzeptierte nur beschreibt, wie der Themenregistrierungscache deaktiviert wird und nicht alle Caches
mastazi
10

Sie können nicht von drehen alle vollständig Caching. Und wenn Sie dies tatsächlich tun würden, würde dies Ihren Fortschritt um so mehr verlangsamen . Bedenken Sie, wie lange es dauert, den Cache tatsächlich zu leeren. So würde jede einzelne Seite geladen.

Es werden so viele Hooks ausgeführt, um Informationen über die verfügbaren Entitäten, Felder, Formulare, implementierten Hooks usw. zu erstellen, die derzeit nur einmal ausgeführt werden müssen. Sie möchten dies nicht verhindern.

Sobald Sie sich an Drupal gewöhnt haben, werden Sie bald erfahren, welche Dinge ein leerer Cache erfordert, und wahrscheinlich werden Sie sich mit der Verknüpfung Admin-Menüs oder anfreunden drush cc all, und dies wird kein Problem mehr sein.

Letharion
quelle
Einverstanden, sobald Sie feststellen, dass die meisten neuen Hooks einen Cache benötigen, der gelöscht werden muss, bevor das reibungslose Segeln von dort aus erkannt wird! :)
Alex Weber
2
Ehrlich gesagt, nach ein paar Monaten Drupal-Entwicklung ist dies immer noch ein Problem. Ich glaube, dass es nicht wichtig ist, die lokale Geschwindigkeit zu entwickeln, aber nicht, dass mehrere Benutzer gleichzeitig Anforderungen senden. In den meisten anderen Frameworks (Django, Symfony usw.) ist das Deaktivieren des Caches während der lokalen Entwicklung eine sofort verfügbare Option. Ich verstehe nicht, warum ich das nicht auch in Drupal kann. Jeden Tag habe ich mindestens ein Problem, bei dem etwas nicht funktioniert. Der Grund dafür ist, dass ich vergessen habe, den Cache zu leeren. Das passiert sehr oft und stört mich sehr.
Mastazi