Caching auf Entwicklungsplattformen kann schmerzhaft sein. Kann ich es ausschalten? Betrifft es eines der Module, die es benötigen?
Caching auf Entwicklungsplattformen kann schmerzhaft sein. Kann ich es ausschalten? Betrifft es eines der Module, die es benötigen?
Antworten:
Installieren Sie das Entwicklungsmodul, das eine Cache- Löschoption für Administratoren hinzufügt. Sie finden einen Entwicklungsblock, den Sie zu einer Region hinzufügen können, um den Cache schnell zu löschen, oder wenn Sie das Admin-Menü installieren und oben links ein Quick-Menü zum Löschen verschiedener Caches in Drupal aufrufen.
Wenn Sie die Befehlszeile mögen, installieren Sie drush und verwenden Sie den drush cc all
Befehl, um die Caches Ihrer Sites zu löschen. Beachten Sie, dass derzeit drush cc den Lack-Cache nicht löscht, wenn dies auf Ihr Setup zutrifft.
Wenn Sie Drupal 7 verwenden, können Sie Ihr Caching immer auf die Verwendung von DrupalFakeCache einstellen, die normalerweise nur während des Installationsprozesses verwendet wird. Um dies einzustellen, füge den folgenden Code in deine settings.php ein:
include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
Auf der Seite "Leistung" in Administration> Site-Konfiguration können Sie das Caching ausgewählter Site-Elemente aktivieren / deaktivieren. Themenvorlagen werden in der Regel dauerhafter zwischengespeichert, können jedoch auf derselben Seite "Leistung" gelöscht werden.
Das Modul 'Administrationsmenü' bietet eine Verknüpfung in einer Symbolleiste, wenn das Leeren des Caches regelmäßiger erfolgen muss.
Soweit ich weiß, gibt es keine Module, die ein Caching erfordern . Wenn Sie es nicht deaktivieren möchten, können Sie es im Site Settings > Performance
Abschnitt löschen .
Auch bei deaktiviertem Caching erkennt Drupal neue Dateien, die zu Themen hinzugefügt wurden, erst, wenn Sie den Cache leeren.
Unter Drupal.org finden Sie einige Informationen zu verschiedenen Methoden zum Löschen des Caches
Zusätzlich zu den Methoden, die Steve H erwähnte , eröffnet die Verwendung des Devel- Moduls ein paar weitere Optionen, darunter:
Wenn das Devel-Modul und das Caching unter " Leistung" deaktiviert sind , ist der einzige andere wichtige Cache, auf den Sie in der Routineentwicklung stoßen, der Menürouter, der wie von Steve erwähnt mit Devel oder Admin Menu neu erstellt werden kann.
Eine wichtige Sache, die zu beachten ist, ist, dass wenn Sie viele Stylesheets haben (entweder aus Ihrem Theme oder aus Modulen), das Deaktivieren der CSS-Dateioptimierung das Potenzial hat, Ihre Site im IE zu beschädigen.
Es befindet sich zwar nicht im Cache, aber auf derselben Einstellungsseite und wird häufig beim Cachen verwendet.
Der Link "Alle Caches leeren" im Admin-Menü-Modul ist übrigens fantastisch.
Wenn Sie Drupal 6 verwenden, kann das " Cache Disable " -Modul für diese Aufgabe nützlich sein, wenn Sie [aus irgendeinem Grund] keine schwereren Module wie Devel installieren möchten.
Alte Frage, aber ich habe gerade gesehen, dass sie im Zusammenhang mit meiner Suche auftauchte.
Fast alle Cache-Löschmethoden rufen am Ende drupal_flush_all_caches auf. Sie können in Ihrem eigenen Code unter verschiedenen Umständen damit experimentieren, dies aufzurufen.
Die Anzahl der mit Drupal verwendeten Caches kann manchmal verrückt werden.
Im Folgenden sind die gängigen Methoden zum Deaktivieren und Löschen von Drupal-Caches aufgeführt, die damit verbunden sind.
CACHES DEAKTIVIEREN:
Beachten Sie, dass Sie nicht alle Caches deaktivieren können, da einige von ihnen von Drupal benötigt werden.
Hier ist eine Methode zum Deaktivieren der Caches, indem Sie die folgenden Zeilen in Ihre Einstellungsdatei einfügen:
// 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;
Wenn Sie alle Ihre Caches deaktivieren, ist Ihre Website sehr langsam. Daher wird sie nicht für andere Umgebungen empfohlen, in denen Ihr Entwicklungscomputer ausgenommen ist.
CACHES LÖSCHEN
XCache
Löschen Sie die XCache-Caches, falls verwendet:
drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"
Oder leeren Sie den Cache in XCache im Admin-Bereich (/ xcache-admin), falls dies nicht funktioniert.
eAccelerator
drush eval "function_exists('accelerator_reset') && accelerator_reset();"
APC
drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"
OPCache
Löschen Sie PHP OPCache, wenn Sie mit PHP> = 5.5 arbeiten
drush eval "function_exists('opcache_reset') && opcache_reset();"
Hinweis: Über dem CLI-Befehl wird der Cache für Apache nicht geleert , wie folgt : Opcache - Cache in PHP5.4 und niedriger bereinigen .
zwischengespeichert
Wenn Sie memcached verwenden, sollten Sie Ihr memcached mit einer der folgenden Methoden löschen, neu starten oder beenden:
Als Benutzer (einer davon):
echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server
Als Wurzel (eine davon):
/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.
Es wird außerdem empfohlen, memcached module mit der folgenden Zeile in Ihrer Einstellungsdatei zu installieren:
$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';
Memcached-Caches werden also im Standard-Drupal-Cache gelöscht.
Lack
Wenn Sie Varnish verwenden, wird empfohlen, das Varnish- Modul zu installieren und die folgende Zeile in Ihrer Einstellungsdatei festzulegen:
$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';
Der Varnish-Cache würde also zusammen mit dem Drupal-Cache gelöscht.
Alternativ können Sie Curl verwenden, um die Seiten manuell zu löschen:
curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123
Lesen Sie weiter: Wie kann ich den Lack-Cache leeren?
Drupal
Löschen Sie die Drupal-Caches über 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();'
Sie können das Gleiche unter / admin / config / development / performance tun, da UI-Caches manchmal besser gelöscht werden als über die CLI.
Hier ist das nützliche Shell-Skript zum Löschen aller Caches:
#!/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.
Wir können eine der folgenden Methoden verwenden, um den Cache in Drupal zu löschen
1.) Wir können einfach die URL your_domain / admin / config / development / performance aufrufen und auf die Schaltfläche zum Löschen des Caches klicken.
2.) Wenn wir ein drush Modul installiert haben, können wir den Cache mit diesem drush cc all Befehl löschen .
3.) Wenn wir Datenbankzugriff haben, können wir den Cache mit den folgenden Befehlen löschen (ein direkter Zugriff auf eine Produktionsdatenbank wird ausdrücklich nicht empfohlen; verwenden Sie stattdessen eine der Alternativen, wenn Ihre Site "live" ist)
TRUNCATE TABLE cache;
TRUNCATE TABLE cache_block;
TRUNCATE TABLE cache_bootstrap;
TRUNCATE TABLE cache_field;
TRUNCATE TABLE cache_filter;
TRUNCATE TABLE cache_form; // beachte wichtige Unterschiede zu anderen cache_ * -Tabellen - siehe mehr Info unten
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.) Wir können auch eine Abfrage in unsere Moduldatei db_query schreiben ("DELETE FROM {cache};");
5.) Wir können die Drupal-API zum Löschen des Caches wie cache_clear_all () verwenden.
6.) Wir können den Cache auch löschen, indem wir das Entwicklungsmodul installieren und den "Entwickler- / Entwicklungsblock" aktivieren. Dadurch können wir den Cache löschen
Weitere Informationen zu cache_form, die einen anderen Zweck als andere cache_- Tabellen haben:
In den Kern-API-Dokumenten für drupal_flush_all_caches () heißt es: "Cache_form nicht löschen - laufende Formularübermittlungen können unterbrochen werden." Diese Bedenken gelten nur für Websites mit aktiven Benutzern und nicht für Entwicklungsversionen.
Andere manuelle Methoden zum Löschen von Caches, die in diesem Beitrag beschrieben werden, wirken sich nicht auf cache_form aus
Wenn Sie die Größe von cache_form auf einer Produktionssite verkleinern müssen, lesen Sie die Informationen unter Die Tabellengröße von Cache Form ist enorm