使用 Whitenoise 和 Debug=False 在生产中不能很好地提供我的静态文件。
有时它服务,有时它找不到静态。我有以下设置:
# Static / Media
MEDIA_URL = os.environ.get('MEDIA_URL', '/media/')
MEDIA_ROOT = os.path.join(BASE_DIR, '.media')
STATIC_URL = os.environ.get('STATIC_URL', '/staticfiles/')
STATIC_ROOT = os.path.join(BASE_DIR, '.static')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'frontend/static'),
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage'
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
...
在部署到 AWS ECS 时,我通常在 docker 上收集静态数据。此外,如果我在python manage.py collectstatic
本地运行,我可以在我的 STATIC_ROOT 上找到文件。
问题出在调试 False 的生产中,如果我通过浏览器访问,有时它会返回静态正确,有时它会给出 404 错误。
我的包版本:
- django==3.0.3
- 白噪声==5.0.1
它可能是什么?请提供任何帮助。