Я использую только Drupal 7, встроенный в агрегацию CSS / JS, однако папка files, в которой находятся файлы css.gz и js.gz, заполняется довольно быстрыми темпами, и хотя я уверен, что это будет какое-то время прежде чем он начнет полностью заполнять диск, сейчас самое подходящее время, чтобы справиться с ситуацией.
- Текущее количество файлов в / js составляет 335
- Текущее количество файлов в / css составляет 451
Есть ли какой-то стандартный метод, который я должен использовать, чтобы справиться с этой ситуацией? Я бы предпочел решение, которое держит Drupal в курсе.
Кроме того, я вижу, что многие из файлов gz имеют не-gz аналоги. Есть ли какая-то причина, по которой файлы .css и .css.gz сохраняются? Может быть, деградация?
Благодарность
Ответы:
Это на самом деле так, чтобы кэшированные страницы с более старыми версиями файлов не ломались. Смотрите этот закрытый вопрос .
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()
по умолчанию 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()
информацию смотрите в разделе .Также посмотрите,
drupal_build_js_cache()
что почти идентичноdrupal_build_css_cache()
.источник
Через 4 года я вынужден не согласиться с первым ответом, где автор утверждает:
Возможно, некоторые вещи были изменены / оптимизированы при подготовке к агрегации более старых файлов, но если я вручную удаляю более старый файл на сервере по адресу files / advagg_js (который я, очевидно, все еще использую в одном из моих браузеров), последующая перезагрузка страницы восстанавливает точно такой же файл снова с недавно добавленным исходным кодом javascript, как если бы он
drupal_build_js_cache()
был выполнен для этого объединенного имени файла.например.
js__22qMV1d_G25luSFBkuR7bIuKD5FE80eKuXx6ldibEixg__yjA2JTeF2f1LUJ3PMdjMr8k9nOPZQJIcvVw-c5Gz_yc__FY0NTHFBVMd9MIGE5srDXTejEZGP-ccSH7UX2zImN-0.js
Таким образом, я пришел к выводу, что установка значительного понижения
drupal_stale_file_threshold
не вызовет никаких проблем, и даже удаление всех агрегированных файлов с последующей очисткой кеша вызовет регенерацию агрегатов (проверено и подтверждено, что работа выполняется при перезагрузке страницы)источник
Может быть что-то вроде этого:
Эти функции PHP могут помочь вам изменить код, как вам нравится.
Будьте очень осторожны перед выполнением этого! Если не используется правильно, вы можете удалить свой сайт! Прежде чем попробовать этот код, протестируйте его на локальном хосте.
источник