web-dev-qa-db-fra.com

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

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

23
palbakulich

Installez le module de développement 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 l'installation en ligne de commande drush et utilisez le drush cc all commande pour effacer les caches de vos sites. Sachez que drush actuellement cc ne vide pas le cache Varnish si cela s'applique à votre configuration.

20
budda

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, supprimez 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';
9
Mikey P

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 de cache doivent être effectués plus régulièrement - pendant le développement du thème, je me retrouve constamment à vider.

4
Storsey

Autant que je sache, il n'y a pas de modules qui nécessitent la mise en cache. Si vous ne souhaitez pas le désactiver, vous pouvez le supprimer dans le Site Settings > Performance section.

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 les différentes façons de vider le cache sur Drupal.org

4
Paul Jones

En plus des méthodes mentionnée 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 Performance , 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é.

4
user7

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 d'administration est fantastique, soit dit en passant.

4
epersonae

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.

3
wildpeaks

Nombre de caches utilisés avec Drupal peut parfois devenir fou.

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


DÉSACTIVATION DES 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 videz 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

Effacer 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, selon: 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 Drupal clear cache).

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 Drupal vider le cache.

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 Drupal caches 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.
2
kenorb

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.

2
mpdonadio

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

1.) Nous pouvons simplement visiter l'url votre_domaine/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 drupal api pour effacer le cache comme cache_clear_all ()

6.) Nous pouvons également vider le cache en installant le module devel module devel 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 caches _ tables:

  • 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 avez besoin de réduire la taille de cache_form sur un site de production, voir La taille de la table Cache Form est énorme

0
SynapseIndia