Ответ
Библиотека whitenoise
позволяет Python-приложениям (WSGI/ASGI) самостоятельно обслуживать статические файлы (CSS, JavaScript, изображения) в production-среде.
Основная цель — упростить развертывание, избавляя от необходимости настраивать отдельный веб-сервер (например, Nginx или Apache) для раздачи статики. Это особенно полезно на платформах PaaS (Platform as a Service), таких как Heroku или Render.
Ключевые возможности:
- Простая интеграция: Легко встраивается как middleware в Django, Flask и другие фреймворки.
- Оптимизация: Автоматически сжимает файлы (Gzip, Brotli) и устанавливает правильные заголовки кеширования (
Cache-Control
,ETag
) для высокой производительности. - Надежность: Протестирована и используется в высоконагруженных проектах.
Пример интеграции с Django:
В файле settings.py
необходимо добавить whitenoise
в MIDDLEWARE
:
# settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
# Whitenoise middleware рекомендуется размещать сразу после SecurityMiddleware
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# ... другие middleware
]
# Указывает, где хранятся статические файлы после выполнения collectstatic
STATIC_ROOT = BASE_DIR / 'staticfiles'
# Включает сжатие и вечное кеширование для файлов с уникальными именами
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
После этой настройки Django-приложение сможет эффективно раздавать статику без помощи внешнего веб-сервера.