Django-compressor: 404 para arquivos compactados em CACHE

Criado em 7 mai. 2017  ·  6Comentários  ·  Fonte: django-compressor/django-compressor

Não consigo acessar os arquivos criados pelo django-compressor. Ele é criado em staticfiles/CACHE/ , mas quando eu carrego a página ele diz:

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)

Nota: O link original é redirecionado para a página 404, daí o /de/ no URL. No código-fonte, os seguintes blocos estão corretos:

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

Vale a pena notar, que eu uso django-sekizai e o pós -processador correspondente compressor.contrib.sekizai.compress .

Minhas configurações:

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',
)

Etiquetas de modelo:

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

Alguém pode me ajudar? Estou preso com isso por 3 dias e incontáveis ​​horas ...

Comentários muito úteis

@oesah , obrigado por isso. Estou tendo exatamente o mesmo problema. Sei que este não é um problema de compressor e que este tópico está encerrado, mas se você iniciou esta discussão sobre ruído branco, por favor, você poderia postar um link. Passei algumas horas tentando resolver esse problema e esse tópico foi um salva-vidas!

Todos 6 comentários

Quando habilito o compressor localmente, funciona perfeitamente! É só no servidor, que ele não encontra os arquivos na pasta CACHE, todo o resto ele encontra.

Ok, outra descoberta: acho que o problema surge devido à combinação de sekizai + whitenoise + compressor. Os documentos do Whitenoise dizem que "_Por motivos de desempenho e segurança, o WhiteNoise não verifica se há novos arquivos após a inicialização (a menos que esteja usando o modo Django DEBUG). Assim, todos os arquivos estáticos devem ser gerados antecipadamente. Se você estiver usando o Django Compressor, isso pode ser executado usando seu recurso de compactação offline._" Assim, o Sekizai os compacta em tempo real (a compactação offline não está disponível devido à natureza do sekizai), sempre que um usuário abre uma página. Whitenoise não pesquisa novamente, então assume que o arquivo não existe. Quando eu reinicio o Django depois de abrir uma página e os arquivos serem criados, ele funciona. Mas se eu for para outra página, tenho que fazer o mesmo processo novamente (abra a página e reinicie). Então ele os encontra corretamente...

Alguma idéia de como consertar isso? Meu próximo teste será não usar sekizai com o pós-processador de compactação, mas adoraria uma solução que funcionasse com sekizai e solicitações estáticas em tempo real.

Então acabou modificando whitenoise.django.DjangoWhiteNoise e mudou

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

para

    self.autorefresh = True
    self.use_finders = True

E agora funciona. Desconsiderando os problemas de desempenho (que ainda não percebi, pelo contrário, o Google Page Speed ​​Insight me dá mais um ponto com a atualização automática ativada..), quais são os problemas de segurança? Posso contornar isso? Seria incrível, se whitenoise também pudesse lidar com estáticas criadas em tempo real (como django-compressor CACHE).

Espero que minhas entradas ajudem alguém a tropeçar nisso.

Oi,

Este não é um problema de compressor, isso pertence ao stackoverflow ou similar (ou talvez fórum de suporte whitenoise)

Sim, cheguei a essa conclusão :) Vou perguntar ao pessoal do whitenoise. Obrigado

@oesah , obrigado por isso. Estou tendo exatamente o mesmo problema. Sei que este não é um problema de compressor e que este tópico está encerrado, mas se você iniciou esta discussão sobre ruído branco, por favor, você poderia postar um link. Passei algumas horas tentando resolver esse problema e esse tópico foi um salva-vidas!

Esta página foi útil?
0 / 5 - 0 avaliações