Django-compressor имеет папку JS cache, которая использует абсурдное количество места
Сегодня утром я проснулся от предупреждения sentry о том, что на моем рабочем сервере полностью закончилось место. Потребовалось некоторое время, чтобы выяснить причину через ncdu
, и в результате оказалось, что моя папка static использовала более 60 ГБ пространства, в частности CACHE/js
, которое использует django-compressor.
Я не совсем понимаю, что происходит, или почему существует более 500 000 js файлов, где каждый файл имеет такой формат: output.<random string>.js
. Насколько я понимаю, не должно ли кэшироваться только небольшое количество js-файлов? В моем проекте даже нет такого количества скриптов!
Мне кажется, что каждый пользователь получает свой собственный выходной файл, а не один и тот же кэшированный файл для всех.
Базовые настройки:
# STATIC
# ------------------------------------------------------------------------------
# https://docs.djangoproject.com/en/dev/ref/settings/#static-root
# STATIC_ROOT = str(ROOT_DIR / "static")
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
# https://docs.djangoproject.com/en/dev/ref/settings/#static-url
STATIC_URL = "/static/"
# https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS
# STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
# https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders
STATICFILES_FINDERS = [
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
"compressor.finders.CompressorFinder",
]
COMPRESS_ENABLED = True
COMPRESS_PRECOMPILERS = (
('text/x-scss', 'django_libsass.SassCompiler'),
)
COMPRESS_FILTERS = {
"css": [
'compressor.filters.css_default.CssAbsoluteFilter',
# 'compressor.filters.cssmin.CSSMinFilter',
'core.CSSMinFilter.CSSMinFilter',
]
}
производственные настройки:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
'LOCATION': '127.0.0.1:11211',
}
}
Первоначально я установил django-compressor (https://django-compressor.readthedocs.io/en/stable/quickstart/), чтобы исправить проблемы, когда пользователям приходилось вручную очищать кэш браузера, чтобы увидеть правильные изменения в шаблонах.
Есть идеи, что происходит, или как это исправить?
редактирование:
Я выполнил следующую команду rm -rf js
для удаления всех файлов, и в течение минуты было создано уже 200 файлов.