¿Cómo manejar / limpiar css / js agregados obsoletos?


17

Solo estoy usando Drupal 7 integrado en la agregación CSS / JS, sin embargo, la carpeta de archivos donde viven los archivos css.gz y js.gz se está llenando a un ritmo bastante rápido, y aunque estoy seguro de que pasará un tiempo antes de que comience a llenar por completo el disco, ahora es un momento tan bueno como cualquier otro para manejar la situación.

  • El recuento actual de archivos en / js es 335
  • El recuento actual de archivos en / css es 451

¿Existe algún método estándar que deba emplear para hacer frente a esta situación? Prefiero una solución que mantenga el drupal en el bucle.

Además, veo que muchos de los archivos gz tienen contrapartes que no son gz. ¿Hay alguna razón por la que se guarden los archivos .css y .css.gz? ¿Degradación tal vez?

Gracias


¿Puedes confirmar que cron se está ejecutando?
mpdonadio

Ciertamente es
DanH

Respuestas:


16

Esto es en realidad por diseño para que las páginas en caché con versiones anteriores de archivos no se rompan. Ver este tema cerrado .

TL; DR: se eliminarán automáticamente 30 días (o cualquiera que sea la drupal_stale_file_thresholdvariable establecida) después de que se crearon mediante drupal_clear_css_cache()y drupal_clear_js_cache(). Entonces, la solución es modificar el drupal_stale_file_thresholdvalor a algo más bajo que el valor predeterminado de 30 días.

  • ¿Cuándo se eliminan los archivos antiguos?

    Los archivos de caché antiguos no se eliminan inmediatamente cuando la variable de búsqueda se vacía, pero se eliminan después de un período establecido por drupal_delete_file_if_stale (). Esto garantiza que los archivos a los que hace referencia una página en caché seguirán estando disponibles.

drupal_delete_file_if_stale() el valor predeterminado es 30 días, por lo que si a) Cron se ejecuta correctamente yb) ve archivos agregados de más de 30 días, tiene un problema diferente.

variable_get('drupal_stale_file_threshold', 2592000)Es el cheque de 30 días. variable_set('drupal_stale_file_threshold', 172800)cambiaría el tiempo de espera a dos días. En un sitio donde el manejo de caché está estrictamente controlado, el tiempo podría ser aún más corto.

Fuente: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7
Consulte drupal_delete_file_if_stale()para obtener más información.

  • ¿Hay alguna razón por la que se guarden los archivos .css y .css.gz?

    Si la compresión CSS gzip está habilitada, las URL limpias están habilitadas (lo que significa que las reglas de reescritura están funcionando) y la extensión zlib está disponible, luego cree una versión comprimida de este archivo. Este archivo se sirve condicionalmente a los navegadores que aceptan gzip utilizando las reglas .htaccess.

Fuente: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7 (En los comentarios de la función)

También vea drupal_build_js_cache()cuál es casi idéntico a drupal_build_css_cache().


Gracias, me siento un poco vago al no haber buscado esto ahora mismo;)
Clive

0

Después de 4 años, tengo que estar en desacuerdo con la primera respuesta, donde el autor afirma:

"Esto garantiza que los archivos a los que hace referencia una página en caché seguirán estando disponibles".

Tal vez ciertas cosas han cambiado / optimizado en el aprovisionamiento de agregación de archivos más antiguos, pero si elimino un archivo más antiguo manualmente en el servidor en files / advagg_js (que aparentemente todavía uso en uno de mis navegadores), la recarga de página posterior se está regenerando exactamente el mismo archivo nuevamente con el código fuente de JavaScript recientemente agregado, como si drupal_build_js_cache()se hubiera ejecutado en ese nombre de archivo agregado.

p.ej. js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js

Por lo tanto, estoy concluyendo que establecer una baja significativa drupal_stale_file_thresholdno causaría ningún problema, e incluso eliminar todos los archivos agregados seguidos de un borrado de caché forzará una regeneración de agregados (probado y confirmado trabajando en la recarga de páginas)


-5
  • Obtenga el módulo Reglas
  • Agregue una nueva regla que se ejecutará cuando se ejecute el cron
  • Como acción, seleccione ejecutar código php.
  • Escribe el código php

Podría ser algo como esto:

$dir = 'your/directory/';
  foreach(glob($dir.'*.*') as $v){
  unlink($v);
}

Estas funciones php pueden ayudarlo a modificar el código a su gusto.

¡Ten mucho cuidado antes de ejecutar esto! Si no se usa correctamente, puede eliminar su sitio. Antes de probar este código, pruébelo en un host local

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.