Django-compressor: 404 للملفات المضغوطة في ذاكرة التخزين المؤقت

تم إنشاؤها على ٧ مايو ٢٠١٧  ·  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 ، شكرا على هذا. أواجه نفس المشكلة بالضبط. أدرك أن هذه ليست مشكلة في الضاغط وأن هذا الموضوع مغلق الآن ، ولكن إذا كنت قد بدأت هذه المناقشة على whitenoise ، فيرجى إرسال رابط. لقد أمضيت بضع ساعات في محاولة لحل هذه المشكلة وكان هذا الموضوع منقذًا للحياة!

ال 6 كومينتر

عندما أقوم بتمكين الضاغط محليًا ، فإنه يعمل بشكل مثالي! إنه فقط على الخادم ، لا يمكنه العثور على الملفات في مجلد CACHE ، وكل شيء آخر يعثر عليه.

حسنًا ، نتيجة أخرى: أعتقد أن المشكلة تنشأ بسبب مزيج من sekizai + whitenoise + ضاغط. تقول Whitenoise Docs أن "_لأسباب تتعلق بالأداء والأمان ، لا تتحقق WhiteNoise من الملفات الجديدة بعد بدء التشغيل (ما لم تستخدم وضع Django DEBUG). على هذا النحو ، يجب إنشاء جميع الملفات الثابتة مسبقًا. إذا كنت تستخدم Django Compressor ، فيمكن أن يكون ذلك يتم إجراؤه باستخدام ميزة الضغط دون اتصال. _ "لذا يقوم Sekizai بضغطها في الوقت الفعلي (الضغط دون اتصال بالإنترنت غير متوفر بسبب طبيعة sekizai) ، عندما يفتح المستخدم صفحة. لا يقوم Whitenoise بالبحث مرة أخرى ، لذلك يفترض أن الملف غير موجود. عندما أقوم بإعادة تشغيل Django بعد أن فتحت صفحة ويتم إنشاء الملفات ، فإنها تعمل. ولكن إذا انتقلت إلى صفحة أخرى ، يجب أن أقوم بنفس العملية مرة أخرى (افتح الصفحة وأعد التشغيل). ثم يجدهم بشكل صحيح ...

أي فكرة عن كيفية إصلاح ذلك؟ سيكون اختباري التالي هو عدم استخدام sekizai مع معالج postprocessor ، لكني أحب حلاً يعمل مع طلبات sekizai والطلبات الثابتة في الوقت الفعلي.

لذلك انتهى الأمر بتعديل whitenoise.django.DjangoWhiteNoise وتغييره

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

ل

    self.autorefresh = True
    self.use_finders = True

والآن يعمل. بغض النظر عن مشكلات الأداء (التي لم ألاحظها بعد ، على العكس من ذلك ، تعطيني Google Page Speed ​​Insight نقطة أخرى مع تمكين التحديث التلقائي ..) ، ما هي مشكلات الأمان؟ هل يمكنني التحايل على هؤلاء؟ سيكون amazin ، إذا كان بإمكان whitenoise أيضًا التعامل مع الإحصائيات التي تم إنشاؤها في الوقت الفعلي (مثل django-compressor CACHE).

آمل أن تساعد مدخلاتي شخصًا آخر في التعثر في هذا الأمر.

مرحبا،

هذه ليست مشكلة ضاغط ، هذا ينتمي إلى stackoverflow أو ما شابه (أو ربما منتدى دعم whitenoise)

نعم وصلت إلى هذا الاستنتاج :) سأطلب من الناس من whitenoise. شكرا

oesah ، شكرا على هذا. أواجه نفس المشكلة بالضبط. أدرك أن هذه ليست مشكلة في الضاغط وأن هذا الموضوع مغلق الآن ، ولكن إذا كنت قد بدأت هذه المناقشة على whitenoise ، فيرجى إرسال رابط. لقد أمضيت بضع ساعات في محاولة لحل هذه المشكلة وكان هذا الموضوع منقذًا للحياة!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات