كيفية منع HTTP 304 في خادم اختبار Django
-
02-10-2019 - |
سؤال
لديّ مشروعان في Django والبديل بين أحدهما والآخر بين الحين والآخر. جميعهم لديهم A / Media / Path ، والذي يتم تقديمه بواسطة django.views.static.serve, ، وهم جميعًا /media/css/base.css ملف.
المشكلة هي ، كلما قمت بتشغيل مشروع واحد ، تطلب BASE.CSS أعد HTTP 304 (لم يتم تعديله) ، ربما لأن الطابع الزمني لم يتغير. ولكن عندما أقوم بتشغيل المشروع الآخر ، يتم إرجاع نفس 304 ، مما يجعل المتصفح يستخدم الملف المخبأ بواسطة المشروع السابق (وبالتالي ، باستخدام ورقة الأنماط الخاطئة).
فقط للسجل ، إليك فصول الأوساط الوسيطة:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.transaction.TransactionMiddleware',
)
أنا دائما أستخدم العنوان الافتراضي http: // localhost: 8000. هل هناك حل آخر (بخلاف استخدام منافذ مختلفة - 8001 ، 8002 ، إلخ)؟
المحلول
يمكنك لف البرامج الوسيطة الخاصة بك لذلك:
class NoIfModifiedSinceMiddleware(object):
def process_request(self, request):
request.META.pop('HTTP_IF_MODIFIED_SINCE', None)
في الأساس ، يزيل رأس HTTP_IF_MODIFITY_SINCE من الطلب.
الفكرة اللاحقة: أو يمكنك monkeypatch django.views.static.serve
واستبدال was_modified_since
يعمل من قبل واحد ، الذي يعود دائما True
.