Django-compressor: 404 pour les fichiers compressés dans CACHE

Créé le 7 mai 2017  ·  6Commentaires  ·  Source: django-compressor/django-compressor

Je ne peux pas accéder aux fichiers créés par django-compressor. Il est créé dans staticfiles/CACHE/ , mais quand je charge la page, il dit :

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)

Remarque : Le lien d'origine est redirigé vers la page 404, d'où le /de/ dans l'URL. Dans le code source, les blocs suivants sont corrects :

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

Il convient de noter que j'utilise django-sekizai et le post -processeur correspondant compressor.contrib.sekizai.compress .

Mes paramètres:

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

Balises de modèle :

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

Est-ce que quelqu'un peut m'aider? Je suis coincé avec ça depuis 3 jours maintenant et d'innombrables heures...

Commentaire le plus utile

@oesah , merci pour cela. J'ai exactement le même problème. Je me rends compte que ce n'est pas un problème de compresseur et que ce fil est maintenant fermé, mais si vous avez commencé cette discussion sur le bruit blanc, pourriez-vous poster un lien. J'ai passé quelques heures à essayer de résoudre ce problème et ce fil m'a sauvé la vie!

Tous les 6 commentaires

Lorsque j'active le compresseur localement, cela fonctionne parfaitement ! C'est juste sur le serveur qu'il ne peut pas trouver les fichiers dans le dossier CACHE, tout ce qu'il trouve.

Ok autre constat : je suppose que le problème vient de la combinaison sekizai + whitenoise + compresseur. Whitenoise Docs indique que "_Pour des raisons de performances et de sécurité, WhiteNoise ne vérifie pas les nouveaux fichiers après le démarrage (sauf si vous utilisez le mode Django DEBUG). En tant que tel, tous les fichiers statiques doivent être générés à l'avance. Si vous utilisez Django Compressor, cela peut être effectué à l'aide de sa fonction de compression hors ligne. _" Ainsi, Sekizai les compresse en temps réel (compression hors ligne non disponible en raison de la nature de sekizai), chaque fois qu'un utilisateur ouvre une page. Whitenoise ne recherche pas à nouveau, il suppose donc que le fichier n'existe pas. Lorsque je redémarre Django après avoir ouvert une page et que les fichiers sont créés, cela fonctionne. Mais si je vais sur une autre page, je dois refaire le même processus (ouvrir la page et redémarrer). Ensuite, il les trouve correctement...

Toute idée de comment résoudre ce problème? Mon prochain test sera de ne pas utiliser sekizai avec le post-processeur de compression, mais j'aimerais une solution qui fonctionne avec sekizai et les requêtes statiques en temps réel.

Donc fini par modifier whitenoise.django.DjangoWhiteNoise et changé

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

à

    self.autorefresh = True
    self.use_finders = True

Et maintenant ça marche. Sans tenir compte des problèmes de performances (que je n'ai pas encore remarqués, au contraire, Google Page Speed ​​Insight me donne un point de plus avec l'actualisation automatique activée..), quels sont les problèmes de sécurité ? Puis-je les contourner ? Ce serait étonnant si le bruit blanc pouvait également gérer les statiques créées en temps réel (comme django-compressor CACHE).

J'espère que mes contributions aideront quelqu'un d'autre à tomber dessus.

Salut,

Ce n'est pas un problème de compresseur, cela appartient à stackoverflow ou similaire (ou peut-être au forum de support whitenoise)

Ouais je suis arrivé à cette conclusion :) Je demanderai aux gens de whitenoise. Merci

@oesah , merci pour cela. J'ai exactement le même problème. Je me rends compte que ce n'est pas un problème de compresseur et que ce fil est maintenant fermé, mais si vous avez commencé cette discussion sur le bruit blanc, pourriez-vous poster un lien. J'ai passé quelques heures à essayer de résoudre ce problème et ce fil m'a sauvé la vie!

Cette page vous a été utile?
0 / 5 - 0 notes