Effacer une seule URL du cache

9

En utilisant le système de cache standard de Drupal, existe-t-il un moyen de vider le cache d'un nœud ou d'une URL sans vider tout le cache (ce qui ralentit tout le site)?

JM01
la source

Réponses:

6

Les actions du cache du module offrent un contrôle très fin sur l'effacement du cache.

Malheureusement, la résolution de votre problème dépend de la façon dont cette URL particulière est créée. Dans le cas où il ne fait pas exactement ce que vous voulez, sa base de code serait toujours un excellent début pour construire plus exactement ce dont vous avez besoin.

Létharion
la source
6

Oui, vous pouvez également le faire par programme.

Dans cet exemple, nous effaçons le cache de la première page:

$url = url('<front>',  array('absolute' => TRUE));

cache_clear_all($url, 'cache_page');

Drupal stocke les chemins en tant que CID dans le tableau et dans l'exemple ci-dessus, nous fournissons l'URL de première page en tant que CID comme premier argument dans la fonction et si vous définissez le CID, il est obligatoire de définir le deuxième argument $ bin dans la fonction, qui est comme de quelle table vous voulez supprimer le cache. Comme nous devons supprimer une seule page, elle est donc présente dans cache_page qui contient le cache des pages.

Sahil Gupta
la source
3

Il existe un module pour cela: Vider le cache des pages . Voici une citation à ce sujet (à partir de la page du projet du module):

Soulager la douleur lorsque vous devez vider ... le cache de Drupal.

Vider le cache de Drupal sur un grand site peut donner l'impression que vous attendez le décollage sur le tarmac de JFK. Le retard vient du fait que lorsque vous effacez le cache de Drupal, il efface tout. La plupart du temps, vous souhaitez simplement vider le cache pour un objet spécifique sur une page.

Le module «Vider le cache de page» résout ce problème en vidant uniquement les objets mis en cache pour une seule page. De plus, vous pouvez définir des objets personnalisés et des tables de cache à effacer sur des pages spécifiques.

giorgio79
la source
0

Une autre option serait de créer un formulaire et d'utiliser la fonction cache_clear_all sur l'url dont vous souhaitez vider le cache. J'ai trouvé un exemple d'utilisation ici

zarsiwala
la source
0

Un peu tard pour la fête ici, mais le module Cache Expire est probablement ce que vous recherchez. Il vous donne un contrôle très précis sur la façon dont la mise en cache est utilisée pour plusieurs types d'entités (si vous utilisez la version 2.x du module).

L'une ou l'autre version du module vous donne cependant accès à une action de règle "Effacer les URL du cache de pages" . Ainsi, vous pouvez spécifier les événements et les conditions nécessaires au déclenchement de la règle, puis les URL que vous spécifiez seront effacées. J'espère que cela t'aides.

Lester Peabody
la source
-1

le nettoyage du cache peut être fait simplement en téléchargeant le module drush depuis http://drupal.org/project/drush

terminal->your drupal directory

écrire la commande drush cc

Cela vous rendrait avec

[0]: Annuler
[1]: tout
[2]: drush
[3]: thème-registre [4]: ​​menu
[5]: css-js
[6]: bloc
[7]: module-list
[8]: liste de thèmes
[9]: registre
[10]: vues

Ainsi, vous pouvez sélectionner la chose que vous souhaitez effacer.

Si vous souhaitez effacer le cache du site Web drupal, vous pouvez installer et activer le module http://drupal.org/project/admin_menu Il fournit une icône d'accueil sur votre fichier drupal et vous donnerait une liste de menus où vous pourriez aller pour les trucs de cache clair ....

Nitesh Sethia
la source
1
Il pose des questions sur le mécanisme de cache personnalisé avancé
Codium
Vous pouvez faire drush cc viewspar exemple où les vues peuvent être de n'importe quel type dans cette liste.
Yzmir Ramirez