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 ...
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!
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!