В ELiS есть три директории с кешированными данными, /var/cache/elis/long, /var/cache/elis/middle, /var/cache/elis/short. В этих директориях хранятся долгосрочные кеши, среднесрочные и краткосрочные.
В кешах находятся извлеченная текстовая информация из ресурсов, отрендеренные страницы в различных форматах, уменьшенные обложки и т.п.
В принципе, все директории с кешами можно очистить и они заново восстановятся, при этом нагрузка на процессор как правило зависит от того, долгосрочный кеш, среднесрочный или краткосрочный.
Раньше алгоритм очистки кешей работал так, что запускался по расписанию раз в 5 минут и удалял файлы из трех директорий пока в них не освободится достаточно места, при этом удалялись те файлы первыми, к которым долго не обращались.
Проблема возникает тогда, когда все три кеша находятся на одном диске т.к. тогда постепенно долгосрочный кеш занимает все пространство, а средносрочный и краткосрочный становятся совсем маленькими.
При этом в ELiS работает механизм генерации обложек тоже по расписанию и они как раз хранятся в краткосрочном кеше.
В итоге возникает ситуация, что:
- когда кеш заканчивается, трётся краткосрочный, в котором обложки;
- через непродолжительное время обложки заново генерируются, оставляя мало свободного места в краткосрочном кеше;
- обложки заново удаляются и так по кругу.
Новый механизм очистки кеша[править]
Чтобы эту проблему избежать, реализован новый механизм очистки кеша, который работает на основе статистики об использовании ресурсов на основе ELiS PlayLogs. Теперь если к ресурсу долго не обращались пользователи, у него удаляется и долгосрочный и среднесрочный и краткосрочный кеш. Т.о. происходит очистка всех трех кешей равномерно.
При этом очистка кешей будет осуществляться в следующем порядке по длительности не использования ресурсов, пока не освободится 10 ГБ на диске с кешем:
- 90 дней;
- 30 дней;
- 20 дней;
- 10 дней;
- 5 дней;
- 24 часа;
- 12 часов;
- 6 часов;
- 3 часа;
- 2 часа;
- 1 час;
- 30 минут;
- 10 минут.
Т.е. если на диске с кешем не хватает 10 ГБ, удаляются кеши для всех ресурсов, к которым не обращались более 90 дней. Если все ещё не хватает 10 ГБ, удаляются все кеши ресурсов, к которым не обращались более 30 дней и т.д.
Запустить очистку кеша в ручном режиме можно drush-командой elis-cache-autoclean:
# cd /var/www/vh/library # sudo -u elis /home/elis/drush/vendor/bin/drush elis-cache-autoclean
Изменить требования к свободному месту, с которого начинается очистка, можно на странице admin/config/content/elis в параметре "ELiS cache free size minimum (MB)". Свободное место надо указывать в мегабайтах. По умолчанию 10240 МБ.
Старый режим очистки кеша[править]
Т.к. новый режим очистки является экспериментальным, а старый действует надежно, оба будут работать одновременно. В начале запускается старый, если на диске с кешем меньше 2 ГБ, затем новый.