Django-compressor: 404 für komprimierte Dateien im CACHE

Erstellt am 7. Mai 2017  ·  6Kommentare  ·  Quelle: django-compressor/django-compressor

Ich kann nicht auf die Dateien zugreifen, die von django-compressor erstellt wurden. Es wird in staticfiles/CACHE/ erstellt, aber wenn ich die Seite lade, heißt es:

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)

Hinweis: Der ursprüngliche Link wird auf die 404-Seite umgeleitet, daher die /de/ in der URL. Im Quellcode sind folgende Blöcke korrekt:

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

Es ist erwähnenswert, dass ich django-sekizai und den dazugehörigen Postprozessor compressor.contrib.sekizai.compress verwende.

Meine Einstellungen:

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

Vorlagen-Tags:

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

Kann mir jemand helfen? Ich stecke jetzt seit 3 ​​Tagen und unzähligen Stunden damit fest ...

Hilfreichster Kommentar

@oesah , danke dafür. Ich habe genau das gleiche Problem. Mir ist klar, dass dies kein Kompressorproblem ist und dass dieser Thread jetzt geschlossen ist, aber wenn Sie diese Diskussion über Whitenoise begonnen haben, könnten Sie bitte einen Link posten. Ich habe ein paar Stunden damit verbracht, dieses Problem zu lösen, und dieser Thread war ein Lebensretter!

Alle 6 Kommentare

Wenn ich den Kompressor lokal aktiviere, funktioniert es perfekt! Es liegt nur am Server, dass er die Dateien im CACHE-Ordner nicht finden kann, alles andere, was er findet.

Ok, noch eine Erkenntnis: Ich vermute, das Problem entsteht durch die Kombination Sekizai + Whitenoise + Compressor. Whitenoise Docs sagen: „_Aus Leistungs- und Sicherheitsgründen sucht WhiteNoise nach dem Start nicht nach neuen Dateien (es sei denn, es wird der Django DEBUG-Modus verwendet). Daher müssen alle statischen Dateien im Voraus generiert werden. Wenn Sie Django Compressor verwenden, kann dies der Fall sein mit seiner Offline-Komprimierungsfunktion durchgeführt._" Sekizai komprimiert sie also in Echtzeit (Offline-Komprimierung ist aufgrund der Natur von Sekizai nicht verfügbar), wenn ein Benutzer eine Seite öffnet. Whitenoise sucht nicht erneut, also geht es davon aus, dass die Datei nicht existiert. Wenn ich Django neu starte, nachdem ich eine Seite geöffnet habe und die Dateien erstellt wurden, funktioniert es. Aber wenn ich zu einer anderen Seite gehe, muss ich den gleichen Vorgang erneut durchführen (Seite öffnen und neu starten). Dann findet es sie richtig ...

Irgendeine Idee, wie man es repariert? Mein nächster Test wird sein, Sekizai nicht mit dem Komprimierungs-Postprozessor zu verwenden, aber ich würde eine Lösung lieben, die mit Sekizai und statischen Echtzeitanforderungen funktioniert.

Also änderte ich whitenoise.django.DjangoWhiteNoise und änderte es

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

zu

    self.autorefresh = True
    self.use_finders = True

Und jetzt funktioniert es. Abgesehen von den Leistungsproblemen (die ich noch nicht bemerkt habe, im Gegenteil, Google Page Speed ​​Insight gibt mir einen weiteren Punkt mit aktivierter automatischer Aktualisierung..), was sind die Sicherheitsprobleme? Kann ich die umgehen? Es wäre erstaunlich, wenn Whitenoise auch mit in Echtzeit erstellten Statiken umgehen könnte (wie Django-Compressor CACHE).

Ich hoffe, meine Eingaben helfen jemand anderem, der darüber stolpert.

Hallo,

Dies ist kein Kompressorproblem, dies gehört zu Stackoverflow oder ähnlichem (oder vielleicht zum Whitenoise-Support-Forum).

Ja, ich bin zu diesem Schluss gekommen :) Werde die Leute von whitenoise fragen. Danke

@oesah , danke dafür. Ich habe genau das gleiche Problem. Mir ist klar, dass dies kein Kompressorproblem ist und dass dieser Thread jetzt geschlossen ist, aber wenn Sie diese Diskussion über Whitenoise begonnen haben, könnten Sie bitte einen Link posten. Ich habe ein paar Stunden damit verbracht, dieses Problem zu lösen, und dieser Thread war ein Lebensretter!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen