Domanda

Come svuotare le cache di Drupal:

  • senza il modulo Devel
  • senza eseguire alcune istruzioni PHP in un nuovo nodo ecc.
  • senza accedere al database stesso

In effetti, come si ordina a un utente finale di cancellare le sue cache?

È stato utile?

Soluzione

Quando sei loggato come amministratore (ovviamente, non tutti gli utenti del sito devono potersi svuotare la cache) , ci dovrebbe essere una pagina in " Amministra gt &; Configurazione del sito & Gt; Prestazioni quot &;.

E, in fondo alla pagina, dovrebbe esserci un pulsante (qualcosa come " Cancella dati memorizzati nella cache ") per cancellare la cache

Per quanto ricordo, non è necessario per Develop farlo, e non è necessario andare al database né eseguire un codice PHP fatto in casa.


Come riferimento, puoi dare un'occhiata a Come svuotare la cache lato server Drupal

Altri suggerimenti

Puoi anche usare il Drush , che ti permette di usare la riga di comando per eseguire il popolare Drupal comandi, come " drush cron " oppure " drush cache clear " ;.

Se si desidera cancellare la cache da un modulo, è possibile utilizzare il seguente codice.

drupal_flush_all_caches();

Ho la soluzione più semplice per quello. Installa il modulo admin_menu (in realtà non solo per questo scopo, una volta installato questo modulo, non te ne pentirai di sicuro, link: http://drupal.org/project/admin_menu ). Ok, quindi su un menu a discesa in alto appena apparso passa il mouse sul tuo menu a comparsa e favicon, e vedrai: Svuota il menu di tutte le cache. Un clic - un flush. Inoltre puoi svuotare tutte le cache insieme o selezionare cosa svuotare: pagine, menu, temi, ecc. Prova e non tornerai mai indietro)

Sarebbe fantastico se potessi semplicemente ottenere il comportamento colpendo:
http://drupal.local./admin/settings/performance?op=Clear%20cached%20data
ma non puoi.
Tuttavia, desidero annotare l'URL per la scorciatoia nel menu di amministrazione (utilizzare l'ultima parte):
http://drupal.local. /admin/settings/performance

La compensazione su richiesta può essere eseguita in Amministra > Configurazione del sito & Gt; Prestazioni.

Dovresti impostare il cron job in modo che venga eseguito ogni ora (o qualunque intervallo a tuo piacimento).

Quando cron viene eseguito su Drupal, tutte le cache vengono cancellate e ricostruite senza la necessità che un essere umano lo esegua manualmente.

Se questa domanda riguarda il tema, è necessario disabilitare i meccanismi di memorizzazione nella cache (aggregazione css / js) e non sarà necessario cancellare i dati della cache quando si apportano modifiche.

Ho trovato quanto segue su: http: //www.drupalgardens. com / content / chiaro-all-cache-non-lavoro

  

C'è un altro livello di memorizzazione nella cache attorno al sito che & cita; cancella tutto   & Cache quot; non influisce, hai ragione. Questo è il livello che memorizza   il contenuto per utenti anonimi.

     

Se si desidera bypassare la cache a scopo di test, è possibile aggiungere un   stringa di query spazzatura alla fine del percorso del sito. Ad esempio, se tu   volevo bypassare la cache su example.drupalgardens.com/foo che potresti   visita example.drupalgardens.com/foo?bar=baz o qualsiasi altro testo casuale   impostato come? xxxxx = xxxxx.

Questo mi ha aiutato, perché ho avuto problemi con la cancellazione della cache in Configuration > Le prestazioni non sembrano aiutare.

Il codice sopra è per Drupal 6.

Per Drupal 7 il modulo flush-cache sarebbe il seguente:

<?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.';
}

Nota: quindi svuotalo andando su:

sitename.com/flush-cache

Assicurati di dare loro l'autorizzazione nella pagina delle autorizzazioni. Svuota la cache una volta il & Quot; normale & Quot; modo se l'autorizzazione non appare dopo aver acceso il modulo.

Questo è preferibile quando non vuoi che il tuo client abbia accesso al menu di amministrazione ma vuoi comunque che siano in grado di svuotare la cache.

QUI VAI:

Ho dovuto disinstallare il " devel " modulo (era incompatibile con le voci di menu speciali, che avevo bisogno di peggio), quindi ho creato il mio.

Ovunque vedi MODULENAME sostituirlo con il nome del tuo modulo.

PASSAGGIO 1: Aggiungi a qualsiasi modulo (preferibilmente uno dei tuoi moduli personalizzati) in HOOK_MENU, prima del & Quot; restituisce $ items & Quot; riga:

// 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,
);

PASSAGGIO 2: Ora, nello stesso file del modulo, dove non è & Quot; dentro & Quot; qualsiasi altra funzione, aggiungi:

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

Ora, puoi semplicemente andare all'URL " / flush-cache " sul tuo sito per svuotare la cache. (Dopo aver svuotato la cache un'ultima volta alla vecchia maniera.)

PASSAGGIO 3: Se lo desideri DAVVERO conveniente, aggiungi quanto segue al tuo file page.tpl.php. Puoi metterlo praticamente ovunque tra & Lt; body & Gt; e < / body > ;. NOTA: $ my_is_test è una variabile che uso TRUE sul mio sistema di test e FALSE in produzione. Se non hai qualcosa del genere, sostituiscilo con TRUE o FALSE per attivarlo o disattivarlo:

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

E voilà! Hai un & Quot; flush & Quot; collegamento nell'angolo in alto a destra di ogni pagina su cui è possibile fare clic. Sentiti libero di cambiare il & Quot; giusto & Quot; e " top " importi (o modifica " destra " in " sinistra " oppure " top " in " bottom " per metterlo dove preferisci. Questo posizionamento di link funziona solo su browser moderni, ma è solo per te, quindi non dovrebbe essere un problema, giusto?

Il modulo seguente crea una voce di menu accessibile solo agli utenti con l'autorizzazione " flush cache " ;, che questo modulo rende disponibile nella normale pagina delle autorizzazioni utente.

/**
 * 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.';
}

In Drupal 8, il modulo del menu di amministrazione non è ancora pronto per l'uso. E probabilmente verrà sostituito con Drupal & Quot; Toolbar & Quot ;. Quindi in questo momento non c'è modo semplice per cancellare la cache, senza effettivamente andare a:

admin/config/development/performance

L'unica alternativa è aggiungere una voce di menu nella barra degli strumenti esistente. Questo può essere fatto utilizzando questo modulo , ma come puoi vedere, ha ancora bisogno di un po 'di lavoro. Ho funzionato, ma ho dovuto apportare alcune modifiche.

usa drush e questo comando: drush cc all

Se stai usando Boost per memorizzare nella cache devi essere più specifico:

drush @alias_name cc all
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top