web-dev-qa-db-de.com

Wie kann ich Drupal Cache leeren (ohne Entwicklung)

Wie leeren ich die Drupal-Caches:

  • ohne das Devel-Modul
  • ohne einige PHP -Anweisungen in einem neuen Knoten auszuführen usw.
  • ohne in die Datenbank selbst zu gehen

Wie weisen Sie einen Endbenutzer effektiv an, seine Caches zu löschen?

20
alexanderpas

Wenn Sie als Admin angemeldet sind (offensichtlich muss nicht jeder Benutzer der Site den Cache leeren), sollte eine Seite in "Verwalten> Site-Konfiguration> Leistung" vorhanden sein.

Am unteren Rand der Seite sollte sich eine Schaltfläche befinden (etwa "Cache-Daten löschen"), um den Cache zu löschen

Soweit ich mich erinnere, ist es für Devel nicht nötig, das zu tun, und Sie müssen nicht wirklich zur Datenbank gehen oder selbst erstellten PHP - Code ausführen.


Als Referenz können Sie einen Blick darauf werfen So löschen Sie den serverseitigen Cache von Drupal

44
Pascal MARTIN

Sie können auch das Modul Drush verwenden, mit dem Sie die Befehlszeile verwenden können, um gängige Drupal-Befehle wie "drush cron" oder "drush cache clear" auszuführen.

20
Niels

Wenn Sie den Cache aus einem Modul löschen möchten, können Sie den folgenden Code verwenden.

drupal_flush_all_caches();
7
sagesolutions

Ich habe die einfachste Lösung dafür. Installieren Sie das Modul admin_menu (eigentlich nicht nur für diesen Zweck. Sobald Sie dieses Modul installiert haben, werden Sie es sicher nicht bereuen. Link: http://drupal.org/project/admin_menu ). Ok, dann erscheint in einem neu erscheinenden oberen Dropdown-Menü Ihr Favicon und das Dropdown-Menü wird angezeigt, und Sie werden sehen: Alle Cache-Menüs leeren. Ein Klick - eine Spülung. Außerdem können Sie alle Caches gemeinsam spülen oder auswählen, was gespült werden soll: Seiten, Menü, Themen usw. Versuchen Sie, und Sie werden niemals zurückkehren.

4
user143520

Es wäre fantastisch, wenn Sie das Verhalten einfach erreichen könnten, indem Sie Folgendes treffen:
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
aber Sie können nicht.
.__ Ich möchte jedoch die URL für das Shortcut über das Admin-Menü notieren (letzteren Teil verwenden)
http://drupal.local. /admin/settings/performance

3
dlamblin

Das Löschen bei Bedarf kann unter Verwalten> Standortkonfiguration> Leistung erfolgen.

Sie sollten den Cron-Job so einrichten, dass er jede Stunde läuft (oder in welchem ​​Intervall Sie möchten).

Wenn Cron unter Drupal ausgeführt wird, werden alle Caches gelöscht und neu erstellt, ohne dass ein Benutzer sie manuell ausführen muss.

Wenn sich diese Frage auf das Thema bezieht, sollten Sie die Caching-Mechanismen (Aggregation von css/js) deaktivieren, und Sie müssen die Cache-Daten nicht löschen, wenn Sie Änderungen vornehmen.

1
Kevin

Ich habe folgendes gefunden: http://www.drupalgardens.com/content/clear-all-caches-not-working

Es gibt eine weitere Caching-Schicht um die Site, die "Alle Cache-Caches löschen" nicht beeinflusst. Sie haben Recht. Das ist die Ebene, die .__ speichert. den Inhalt für anonyme Benutzer.

Wenn Sie den Cache zu Testzwecken umgehen möchten, können Sie eine .__ hinzufügen. Junk-Abfragezeichenfolge an das Ende Ihres Site-Pfads. Zum Beispiel, wenn Sie wollte den Cache auf example.drupalgardens.com/foo umgehen, Sie könnten Besuchen Sie example.drupalgardens.com/foo?bar=baz oder einen beliebigen anderen zufälligen Text Einrichten wie? xxxxx = xxxxx.

Dies hat mir geholfen, da ich Probleme hatte, bei denen das Löschen des Cache unter Konfiguration> Leistung nicht zu helfen schien.

1
ansorensen

Der obige Code gilt für Drupal 6.

Für Drupal 7 wäre das Flush-Cache-Modul wie folgt:

<?php 
/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_permission()
 */
function flush_cache_permission() {
  return array(
    'administer my module' => array(
      'title' => t('flush cache module'),
      'description' => t('Content admin flush cache.'),
    ),
  );
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

Hinweis: Sie spülen es dann durch:

sitename.com/flush-cache

Stellen Sie sicher, dass Sie ihnen die Berechtigung auf der Berechtigungsseite erteilen. Leeren Sie den Cache einmal "normal", wenn die Berechtigung nach dem Einschalten des Moduls nicht angezeigt wird.

Dies ist vorzuziehen, wenn Sie nicht möchten, dass Ihr Client auf das Admin-Menü zugreifen kann, der Cache jedoch geleert werden soll.

1

BITTE SCHÖN:

Ich musste das "devel" -Modul deinstallieren (es war nicht mit speziellen Menüelementen kompatibel, was ich noch schlimmer brauchte), also habe ich mir ein eigenes gemacht.

Wo immer Sie MODULENAME sehen, ersetzen Sie es durch den Namen Ihres Moduls.

SCHRITT 1: Fügen Sie ein beliebiges Modul (vorzugsweise eines Ihrer benutzerdefinierten Module) im HOOK_MENU vor der Zeile "return $ items" ein:

// short cut for flushing the caches:
$items['flush-cache'] = array(
  'type' => MENU_CALLBACK,
  'title' => t('Flush the cache'),
  'description' => 'MODULENAME Custom Cache Flush',
  'page callback' => 'MODULENAME_flush_cache',
  'access callback' => TRUE,
);

SCHRITT 2: .__ Fügen Sie nun in derselben Moduldatei, in der sich keine andere Funktion befindet, Folgendes hinzu:

/**  Page callback  **/
function MODULENAME_flush_cache() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}

Jetzt können Sie einfach auf die URL "/ flush-cache" auf Ihrer Website gehen, um den Cache zu leeren. (Nachdem Sie den Cache ein letztes Mal auf die alte Weise geleert haben.)

SCHRITT 3: Wenn Sie es WIRKLICH bequem wünschen, fügen Sie der Datei page.tpl.php Folgendes hinzu. Sie können es fast überall zwischen <body> und </ body> einfügen. HINWEIS: $ my_is_test ist eine von mir verwendete Variable, die auf meinem Testsystem TRUE und in der Produktion FALSE ist. Wenn Sie so etwas nicht haben, ersetzen Sie es durch WAHR oder FALSCH, um es ein- oder auszuschalten:

<?php if ($my_is_test): ?>
<a style="text-align:left; position:absolute; right:2px; top:20px;" href="<?=$base_path?>flush-cache" onclick="this.innerHTML = '<b><blink><big>Wait...</big></blink></b>';">flush</a>
<? endif; ?>

Und voila! Auf jeder Seite, auf die Sie klicken können, befindet sich rechts oben ein "Flush" -Link. Fühlen Sie sich frei, die Beträge "rechts" und "oben" zu ändern (oder ändern Sie "rechts" in "links" oder "oben" in "unten"), um sie an eine beliebige Stelle zu setzen nur für dich, also sollte es kein problem sein, oder?

0
Jeffiekins

Das folgende Modul erstellt ein Menüelement, auf das nur Benutzer mit der Berechtigung "Cache leeren" zugreifen können, die dieses Modul auf der regulären Benutzerberechtigungsseite verfügbar macht.

/**
 * Implementation of hook_menu()
 */
function flush_cache_menu() {
  $items = array();

  $items['flush-cache'] = array(
  'type' => MENU_NORMAL_ITEM,
  'title' => t('Flush the cache'),
  'description' => 'Flush all website caches to make sure it updates to relect '.
    'your recent changes.',
  'page callback' => 'flush_cache_custom_callback',
  'access callback' => user_access('flush cache'),
  );

  return $items;
}

/**
 * Implementation of hook_perm()
 */
function flush_cache_perm() {
  return array('flush cache');
}

/**
 * Function that flushes the cache
 */
function flush_cache_custom_callback() {
  drupal_flush_all_caches();
  return 'Caches were flushed.';
}
0
Shaun Dychko

In Drupal 8 ist das Admin-Menümodul noch nicht vollständig einsatzbereit. Und es wird wahrscheinlich mit Drupal "Toolbar" ersetzt. Im Moment gibt es keine einfache Möglichkeit, den Cache zu löschen, ohne tatsächlich zu gehen: 

admin/config/development/performance

Die einzige Alternative ist das Hinzufügen eines Menüelements in die vorhandene Symbolleiste. Dies kann mit diesem Modul erfolgen, aber wie Sie sehen können, ist noch ein bisschen Arbeit nötig. Ich habe es zum Laufen gebracht, musste aber ein paar Verbesserungen vornehmen.

0
coderama