Puis-je désactiver le cache pour le déploiement de développement?

22

Sur la plate-forme de développement, la mise en cache peut être pénible. Puis-je l'éteindre? Cela affectera-t-il les modules qui en ont besoin?

palbakulich
la source

Réponses:

19

Installez le module devel qui ajoute une option d'effacement du cache pour les administrateurs. Vous trouverez un bloc de développement à ajouter à une région pour un effacement rapide du cache, ou si vous installez le menu admin et obtenez un menu rapide en haut à gauche pour effacer divers caches dans Drupal.

Si vous aimez la ligne de commande, installez drush et utilisez la drush cc allcommande pour effacer les caches de vos sites. Sachez que drush actuellement cc ne vide pas le cache Varnish si cela s'applique à votre configuration.

budda
la source
9

Si vous utilisez Drupal 7, vous pouvez toujours définir votre mise en cache à l'aide de DrupalFakeCache, qui n'est normalement utilisé que pendant le processus d'installation. Pour définir cela, déposez l'extrait de code suivant dans votre settings.php:

include_once(DRUPAL_ROOT . '/includes/cache.inc');
include_once(DRUPAL_ROOT . '/includes/cache-install.inc');
$conf['cache_default_class'] = 'DrupalFakeCache';
Mikey P
la source
4

La page 'Performances' dans l'administration> la configuration du site vous permettra d'activer / désactiver la mise en cache des éléments de site sélectionnés. Les modèles de thème sont généralement mis en cache de manière plus persistante, mais peuvent être vidés dans la même page «performances».

Le module «menu d'administration» fournira un raccourci dans une barre d'outils si les vidages du cache doivent être effectués plus régulièrement - pendant le développement du thème, je me retrouve constamment à vider.

Storsey
la source
4

Pour autant que je sache, aucun module ne nécessite de mise en cache. Si vous ne souhaitez pas le désactiver, vous pouvez le supprimer dans la Site Settings > Performancesection.

Même avec la mise en cache désactivée, Drupal ne reconnaîtra pas les nouveaux fichiers ajoutés aux thèmes jusqu'à ce que vous effaciez le cache.

Il y a quelques informations sur différentes façons de vider le cache sur Drupal.org

Paul Jones
la source
4

En plus des méthodes mentionnées par Steve H , l'utilisation du module Devel ouvre quelques options supplémentaires, notamment:

  • Reconstruction du cache de thème à chaque chargement de page (utile si vous êtes un thème travaillant sur des fichiers de modèle)
  • Un bloc qui fournira un accès facile à la fonction de cache vide et à la fonction de réinstallation.

Avec le module Devel et la mise en cache désactivés sous Performances , le seul autre cache majeur que vous rencontrerez dans le développement de routine est le routeur de menu, qui peut être reconstruit en utilisant Devel ou Admin Menu comme Steve l'a mentionné.

Communauté
la source
4

Une chose importante à noter est que si vous avez beaucoup de feuilles de style (à partir de votre thème ou de modules), la désactivation de l'optimisation des fichiers CSS a le potentiel de casser votre site dans IE.

Bien qu'il ne soit pas réellement mis en cache, il se trouve sur la même page de paramètres et est souvent utilisé avec la mise en cache.

Le lien "Vider tous les caches" dans le module du menu admin est fantastique, soit dit en passant.

epersonae
la source
Si vous êtes inquiet pour IE, vous pouvez utiliser drupal.org/project/ie_css_optimizer
realityloop
3

Si vous utilisez Drupal 6, le module " Cache Disable " peut être pratique pour cette tâche si vous ne souhaitez pas [pour une raison quelconque] installer des modules plus lourds comme Devel.

pics sauvages
la source
2

Vieille question, mais je viens de la voir apparaître comme liée à une recherche que je faisais.

Presque toutes les méthodes d'effacement du cache finissent par appeler drupal_flush_all_caches à la fin. Vous pouvez jouer avec l'appel dans diverses circonstances dans votre propre code.

mpdonadio
la source
2

La quantité de caches utilisées avec Drupal peut parfois devenir folle.

Voici les méthodes courantes de désactivation et d'effacement des caches Drupal et associées.


DÉSACTIVER LES CACHES:

Notez que vous ne pouvez pas désactiver tous les caches, car certains d'entre eux sont requis par Drupal.

Voici une méthode pour désactiver les caches en ajoutant les lignes suivantes dans votre fichier de paramètres:

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

Si vous désactivez tous vos caches, votre site Web sera très lent, il n'est donc pas recommandé pour les autres environnements exemptés de votre machine de développement.


EFFACEMENT DES CACHES

XCache

Vider les caches XCache si utilisé:

drush eval "function_exists('xcache_clear_cache') && xcache_clear_cache();"

Ou effacez le cache dans XCache dans le panneau d'administration (/ xcache-admin) si ci-dessus ne fonctionne pas.

eAccelerator

drush eval "function_exists('accelerator_reset') && accelerator_reset();"

APC

drush eval "function_exists('apc_clear_cache') && apc_clear_cache();"

OPCache

Effacez PHP OPCache si vous utilisez avec PHP> = 5.5

drush eval "function_exists('opcache_reset') && opcache_reset();"

Remarque: La commande CLI ci-dessus n'effacera pas le cache pour Apache, comme par: Opcache - Nettoyer le cache en PHP5.4 et inférieur .

memcached

Si vous utilisez memcached, vous devez effacer, redémarrer ou tuer votre memcached avec l'une des méthodes:

En tant qu'utilisateur (l'un d'eux):

echo flush_all > /dev/tcp/127.0.0.1/11211
echo flush_all | nc localhost 11211 # Flush Contents Of a Memcached Server

En tant que racine (l'un d'eux):

/etc/init.d/rc.d/memcached restart
service memcached restart
killall memcached # It's automatically restarted on OSX.

Il est également conseillé d'installer le module memcached avec la ligne suivante dans votre fichier de paramètres:

$conf['cache_backends'][] = 'sites/all/modules/contrib/memcache/memcache.inc';

Les caches Memcached sont donc effacés sur le cache clair Drupal standard.

Vernis

Si vous utilisez Varnish, il est conseillé d'installer le module Varnish et de définir la ligne suivante dans votre fichier de paramètres:

$conf['cache_backends'][] = 'sites/all/modules/contrib/varnish/varnish.cache.inc';

Ainsi, le cache Varnish serait effacé ensemble sur le cache clair Drupal.

Vous pouvez également utiliser curl pour effacer les pages manuellement:

curl -X PURGE -H "Host: domain.com" http://127.0.0.1/node/123

En savoir plus: Comment puis-je vider le cache Varnish?

Drupal

Effacer les caches Drupal via 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();'

Vous pouvez faire de même dans / admin / config / development / performance, car parfois les caches d'interface utilisateur sont effacés de la meilleure manière que depuis CLI.


Voici le script shell utile pour effacer tous les 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.
kenorb
la source
3
L'OPCache ne fonctionnera pas à partir de la CLI, par exemple voir l'explication sur: stackoverflow.com/questions/17716639/…
LarS
0

nous pouvons utiliser l'une des méthodes suivantes pour vider le cache dans drupal

1.) Nous pouvons simplement visiter l'url your_domain / admin / config / development / performance et cliquer sur le bouton vider le cache.

2.) Si nous avons installé le module drush, nous pouvons vider le cache par cette commande drush cc all .

3.) Si nous avons accès à la base de données, nous pouvons vider le cache avec les commandes suivantes (l'accès direct à une base de données de production n'est absolument pas recommandé; utilisez plutôt l'une des alternatives si votre site est "en direct")

Cache TRUNCATE TABLE;

TRUNCATE TABLE cache_block;

TRUNCATE TABLE cache_bootstrap;

TRUNCATE TABLE cache_field;

TRUNCATE TABLE cache_filter;

TRUNCATE TABLE cache_form; // notez les différences importantes par rapport aux autres tables cache_ * - voir plus d'informations ci-dessous

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.) Nous pouvons également écrire une requête dans notre fichier de module db_query ("DELETE FROM {cache};");

5.) Nous pouvons utiliser l'api drupal pour effacer le cache comme cache_clear_all ()

6.) Nous pouvons également vider le cache par le module de développement installer le module de développement et activer le "Developer / Development Block" par ceci, nous pouvons vider le cache

Plus d'informations sur cache_form, qui a un objectif différent des autres tables cache_form :

  • les documents de base de l'api pour drupal_flush_all_caches () disent "Ne pas effacer cache_form - les soumissions de formulaires en cours peuvent se casser." Cette préoccupation s'applique uniquement aux sites avec des utilisateurs actifs et non aux versions de développement.

  • les autres méthodes manuelles d'effacement des caches décrites dans cet article n'affecteront pas cache_form

  • si vous devez réduire la taille de cache_form sur un site de production, voir La taille de la table Cache Form est énorme

SynapseIndia
la source