J'utilise uniquement Drupal 7 intégré à l'agrégation CSS / JS, mais le dossier de fichiers où les fichiers css.gz et js.gz se remplissent à un rythme assez rapide, et même si je suis sûr que ce sera un certain temps avant qu'il ne commence à remplir complètement le lecteur, il est maintenant aussi bon que n'importe quel moment pour comprendre la situation.
- Le nombre actuel de fichiers dans / js est de 335
- Le nombre actuel de fichiers dans / css est de 451
Existe-t-il une méthode standard que je devrais utiliser pour faire face à cette situation? Je préférerais une solution qui garde le drupal dans la boucle.
De plus, je constate que de nombreux fichiers gz ont des homologues non gz. Y a-t-il une raison pour laquelle les fichiers .css et .css.gz sont conservés? Degrédation peut-être?
Merci
Réponses:
C'est en fait de par leur conception afin que les pages mises en cache avec des versions plus anciennes de fichiers ne soient pas cassées. Voir ce numéro fermé .
TL; DR: Ils seront supprimés automatiquement 30 jours (ou quelle que soit la valeur de votre
drupal_stale_file_threshold
variable) après leur création viadrupal_clear_css_cache()
etdrupal_clear_js_cache()
. La solution consiste donc à modifier ladrupal_stale_file_threshold
valeur à une valeur inférieure aux 30 jours par défaut.drupal_delete_file_if_stale()
par défaut à 30 jours - donc si a) Cron fonctionne correctement et b) vous voyez des fichiers agrégés de plus de 30 jours, vous avez un problème différent.variable_get('drupal_stale_file_threshold', 2592000)
est le chèque de 30 jours.variable_set('drupal_stale_file_threshold', 172800)
changerait le délai d'attente à deux jours. Sur un site où la gestion du cache est strictement contrôlée, le temps pourrait être encore plus court.Source: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7
Voir
drupal_delete_file_if_stale()
pour plus d'informations.Voir aussi
drupal_build_js_cache()
qui est presque identique àdrupal_build_css_cache()
.la source
Après 4 ans, je dois être en désaccord avec la première réponse, où l'auteur déclare:
Peut-être que certaines choses ont été modifiées / optimisées dans le provisionnement d'agrégation de fichiers plus anciens, mais si je supprime un fichier plus ancien manuellement sur le serveur dans files / advagg_js (que j'utilise apparemment toujours dans l'un de mes navigateurs), le rechargement de page suivant se régénère exactement le même fichier à nouveau avec le code source javascript récemment ajouté, comme si
drupal_build_js_cache()
avait été exécuté sur ce nom de fichier agrégé.par exemple.
js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js
Je conclus donc que la définition d'une baisse significative
drupal_stale_file_threshold
ne poserait aucun problème, et même la suppression de tous les fichiers agrégés suivie d'un effacement du cache forcera une régénération des agrégats (test et confirmation du travail sur les rechargements de page)la source
Cela pourrait être quelque chose comme ça:
Ces fonctions php peuvent vous aider à modifier le code à votre guise.
Soyez très prudent avant d'exécuter cela! S'il n'est pas utilisé correctement, vous pouvez supprimer votre site! Avant d'essayer ce code, testez-le sur un hôte local
la source