Django-compressor: 404 для сжатых файлов в КЭШЕ

Созданный на 7 мая 2017  ·  6Комментарии  ·  Источник: django-compressor/django-compressor

Я не могу получить доступ к файлам, созданным django-compressor. Он создается в staticfiles/CACHE/ , но когда я загружаю страницу, он говорит:

GET https://site.com/de/static/CACHE/css/5e257aa688ab.css/ 404 (Not Found)
GET https://site.com/de/static/CACHE/js/3f1c59956fa3.js/ 404 (Not Found)

Примечание . Исходная ссылка перенаправляется на страницу 404, отсюда и /de/ в URL-адресе. В исходном коде корректны следующие блоки:

<link rel="stylesheet" href="/static/CACHE/css/5e257aa688ab.css" type="text/css" />
<script type="text/javascript" src="/static/CACHE/js/3f1c59956fa3.js"></script>

Стоит отметить, что я использую django-sekizai и соответствующий постпроцессор compressor.contrib.sekizai.compress .

Мои настройки:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage'
COMPRESS_URL = STATIC_URL
COMPRESS_ENABLED = True

STATIC_ROOT = '/app/staticfiles/'  # usually computed, ends up here
STATIC_URL = '/static/'

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    # Django-Bower
    'compressor.finders.CompressorFinder',
)

Теги шаблона:

{% render_block "css" postprocessor "compressor.contrib.sekizai.compress" %}
{% render_block "js" postprocessor "compressor.contrib.sekizai.compress" %}

Кто-нибудь может мне помочь? Я застрял с этим в течение 3 дней и бесчисленных часов...

Самый полезный комментарий

@oesah , спасибо за это. У меня точно такая же проблема. Я понимаю, что это не проблема компрессора, и что эта ветка сейчас закрыта, но если вы начали обсуждение белого шума, не могли бы вы опубликовать ссылку. Я потратил несколько часов, пытаясь решить эту проблему, и эта тема спасла мне жизнь!

Все 6 Комментарий

Когда я включаю компрессор локально, он работает отлично! Просто на сервере он не может найти файлы в папке CACHE, все остальное находит.

Хорошо, еще один вывод: я думаю, проблема возникает из-за комбинации сэкидзай + вайтнойз + компрессор. Документы Whitenoise говорят, что «по соображениям производительности и безопасности WhiteNoise не проверяет наличие новых файлов после запуска (если только не используется режим Django DEBUG). Таким образом, все статические файлы должны быть сгенерированы заранее. Если вы используете Django Compressor, это может быть выполняется с использованием функции автономного сжатия._» Таким образом, Sekizai сжимает их в реальном времени (автономное сжатие недоступно из-за природы сэкидзай), когда пользователь открывает страницу. Whitenoise больше не выполняет поиск, поэтому предполагает, что файл не существует. Когда я перезапускаю Django после открытия страницы и создания файлов, все работает. Но если я перейду на другую страницу, мне придется снова выполнить тот же процесс (открыть страницу и перезапустить). Тогда он находит их правильно...

Есть идеи, как это исправить? Мой следующий тест будет состоять в том, чтобы не использовать сэкидзай с постпроцессором сжатия, но мне бы понравилось решение, которое работает с сэкидзай и статическими запросами в реальном времени.

Так закончилось изменением whitenoise.django.DjangoWhiteNoise и изменением

    self.autorefresh = settings.DEBUG
    self.use_finders = settings.DEBUG

к

    self.autorefresh = True
    self.use_finders = True

И теперь это работает. Не считая проблем с производительностью (которых я пока не заметил, наоборот, Google Page Speed ​​Insight дает мне еще один балл с включенным автообновлением..), какие проблемы с безопасностью? Могу ли я обойти их? Было бы удивительно, если бы whitenoise также мог обрабатывать статику, созданную в реальном времени (например, CACHE django-compressor).

Надеюсь, что мой вклад поможет кому-то еще наткнуться на это.

Привет,

Это не проблема компрессора, это относится к stackoverflow или аналогичному (или, возможно, к форуму поддержки белого шума)

Ага, я пришел к такому выводу :) Спрошу у людей из whitenoise. Спасибо

@oesah , спасибо за это. У меня точно такая же проблема. Я понимаю, что это не проблема компрессора, и что эта ветка сейчас закрыта, но если вы начали обсуждение белого шума, не могли бы вы опубликовать ссылку. Я потратил несколько часов, пытаясь решить эту проблему, и эта тема спасла мне жизнь!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги