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