Як обробити / очистити застарілий зведений css / js?


17

Я використовую лише Drupal 7, вбудований в агрегацію CSS / JS, проте папка файлів, де живуть файли css.gz та js.gz, заповнюється досить швидкими темпами, і, хоча я впевнений, це пройде деякий час перед тим, як він почне повністю заповнювати привід, новина так само добре, як і будь-який час, щоб зрозуміти ситуацію.

  • Поточний кількість файлів в / js становить 335
  • Поточний кількість файлів у / css становить 451

Чи є якийсь стандартний метод, який я повинен використовувати для вирішення цієї ситуації? Я вважаю за краще рішення, яке зберігає drupal у циклі.

Крім того, я бачу, що багато файлів gz мають аналоги, що не стосуються gz. Чи є якась причина, і файли .css і .css.gz зберігаються? Деградація, можливо?

Спасибі


Чи можете ви підтвердити, що cron працює?
mpdonadio

Це, безумовно,
DanH

Відповіді:


16

Це насправді дизайн, щоб кешовані сторінки зі старими версіями файлів не були зламані. Дивіться це закрите питання .

TL; DR: вони будуть видалені автоматично через 30 днів (або все drupal_stale_file_threshold, що встановлено для вашої змінної) після створення через drupal_clear_css_cache()і drupal_clear_js_cache(). Тож рішення - змінити drupal_stale_file_thresholdзначення на щось нижче, ніж 30 днів за замовчуванням.

  • Коли старі файли видаляються

    Старі файли кешу не видаляються одразу, коли змінена параметр пошуку спорожняється, але видаляються через встановлений період drupal_delete_file_if_stale (). Це гарантує, що файли, на які посилається кешована сторінка, все ще будуть доступні.

drupal_delete_file_if_stale() за замовчуванням до 30 днів - тому якщо a) Cron працює належним чином і b) ви бачите зведені файли старші 30 днів, у вас є інша проблема.

variable_get('drupal_stale_file_threshold', 2592000)це 30-денний чек. variable_set('drupal_stale_file_threshold', 172800)змінить час очікування на два дні. На сайті, де керування кешем суворо контролюється, час може бути ще коротшим.

Джерело: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7
Детальну drupal_delete_file_if_stale()інформацію див.

  • Чи є якась причина, і файли .css і .css.gz зберігаються?

    Якщо стиснення CSS gzip увімкнено, увімкнено чисті URL-адреси (це означає, що правила перезапису працюють), а розширення zlib доступне, тоді створіть gzipped версію цього файлу. Цей файл умовно подається браузерам, які приймають gzip, використовуючи правила .htaccess.

Джерело: http://api.drupal.org/api/drupal/includes!common.inc/function/drupal_build_css_cache/7 (У коментарях до функції)

Також дивіться, drupal_build_js_cache()який майже ідентичний drupal_build_css_cache().


Дякую, я трохи лінивий, що не подивився цього зараз;)
Клайв

0

Через 4 роки я повинен не погодитися з першою відповіддю, де автор заявляє:

"Це гарантує, що файли, на які посилається кешована сторінка, все ще будуть доступні."

Можливо, певні речі були змінені / оптимізовані під час надання агрегації старих файлів, але якщо я видаляю старіший файл вручну на сервері у файлах / advagg_js (який я, мабуть, все ще використовую в одному з моїх браузерів), наступне перезавантаження сторінки відновлюється знову той самий файл із нещодавно доданим вихідним кодом javascript, як ніби drupal_build_js_cache()він виконаний на цьому зведеному імені файлу.

напр. js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js

Отже, я роблю висновок, що встановлення значного нижчого drupal_stale_file_thresholdрозміру не спричинить жодних проблем, і навіть видалення всіх агрегованих файлів з подальшим кешем очищення змусить відновити агрегати (перевірено та підтверджено, що працює над перезавантаженням сторінок)


-5
  • Отримайте модуль Правила
  • Додайте нове правило, яке буде виконуватися під час запуску крона
  • В якості дії виберіть виконати php-код.
  • Напишіть код php

Це може бути щось подібне:

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

Ці функції php можуть допомогти вам змінити код, як вам подобається.

Будьте дуже обережні, перш ніж це виконати! Якщо не використовується правильно, ви можете видалити свій сайт! Перш ніж спробувати цей код, протестуйте його на localhost

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.