أداة تهيئة سياسات التخزين المؤقت والإصدارات

أشد أنواع الأعطال خفيةً: حيث يُرجع الخادم رمز الحالة 200 باستمرار، بينما تستمر الصفحة في إظهار أخطاء. نصوص الخلفية لدينا بسبب nginx expires 7d تم تخزين النص البرمجي مؤقتًا في المتصفح لمدة سبعة أيام، وبعد تحديثه استمر المتصفح في تشغيل الإصدار القديم، مما تسبب في تعطل العرض عند معالجة تنسيق البيانات الجديد، بينما أبلغ الكود عن جميع الاستثناءات على أنها «فشل قراءة الخادم» — وبقي البحث مستمرًا في الخادم لفترة طويلة، رغم أن الخادم كان يعمل بشكل طبيعي طوال الوقت. وتولِّد هذه الأداة مجموعةً متكاملةً من سياسات التخزين المؤقت التي لا تتعارض مع بعضها البعض حسب نوع الملف، بالإضافة إلى نص فحص رؤوس الاستجابة.

مجاني · لا حاجة لتسجيل الدخول توليد محلي · المحتوى غير مُرفَّع الحادث المقابل · عدم تطابق الإصدارات في ذاكرة التخزين المؤقت الطويلة → عطل وهمي في الخلفية.

1معلومات الموقع

اقتراحات التنسيق YYYYMMDD + حرف ترتيبي.(الإصدار الأول اليوم هو a، ثم يتم تعديله في نفس اليوم ليصبح b).

2اختر نوع الملف الذي تمتلكه

اختر جميع الخيارات غير المؤكدة؛ أما الأجزاء الزائدة فيمكن حذفها ببساطة؛ أما أنواع الملفات التي تفوتك فهي السبب الحقيقي في حدوث المشكلات.

3اختيار الاستراتيجية

النتيجةنظرة عامة على الاستراتيجية

المخرجاتمقتطف التخزين المؤقت في nginx

0 سطر
—

المخرجاتنص برمجي للفحص الذاتي لرؤوس الاستجابة

0 سطر
—
بعد تعديل التكوين، يجب تشغيل الأمر: ما يتم مراجعته هورؤوس الاستجابة، وليس ملف تهيئة. ومن الشائع جدًّا أن يكون ملف التهيئة مكتوبًا بشكل صحيح لكنه لم يُفعَّل.

دليل سريعالظاهرة → الجاني الحقيقي → كيفية التأكيد.

الظاهرةالجاني الحقيقيكيفية التأكيد
بعد تعديل ملفات CSS/JS، لا تبدو التغييرات «مُطبَّقة» على الإصدار الحيذاكرة التخزين المؤقت الطويلة + الإشارات دون رقم إصدار.curl -I راجع قيمة max-age؛ وأعد الإرسال بعد تغيير رقم الإصدار
سجلات الخادم تُظهر رمز الحالة 200 بالكامل، ومع ذلك تظهر الصفحة رسالة «لا يمكن قراءة البيانات»يتسبب تشغيل المتصفح لنص برمجي قديم مع عرض تنسيق بيانات جديد في تعطل التصيير، وتُبلَّغ هذه المشكلة كعطل شبكي زائف بسبب استخدام عبارة catch.افحص سطر الخطأ في وحدة التحكم (Console)؛ ثم غيّر إعداد التخزين المؤقت إلى no-cache للنَّص البرمجي، وبعدها اضغط Ctrl+F5.
بعض الصفحات حديثة وبعضها قديميتم استدعاء نفس ملف CSS من قِبل عدة صفحات، وقد تم تحديث رقم الإصدار فقط في بعض هذه الصفحاتابحث عن اسم هذا المورد عبر الموقع بالكامل، وارفع رقم الإصدار دفعةً واحدة.
يستغرق تفعيل التغييرات في الخلفية عدة أيامٍ قبل أن تصبح ساريةً.تم تعيين صفحات الخلفية لتستخدم تخزينًا مؤقتًا طويل الأمدلا تخزن أبدًا (no-store) في الخلفية بشكل موحد.
البيانات لا تزال أقدم نسخة متوفرةتم تخزين واجهات برمجة التطبيقات (API) في ذاكرة التخزين المؤقت لـ CDN أو المتصفحواجهة برمجية (API) بوضع no-store؛ وطلب fetch مع معلمة تحتوي على الطابع الزمني
أداة curl المحلية تعمل بشكل طبيعي، لكن متصفح المستخدم لا يعملطبقة CDN ما زالت تحتفظ بإصدار قديم في ذاكرة التخزين المؤقت.استخدم -H 'Cache-Control: no-cache' قارن، ثم أفرغ الذاكرة المؤقتة من لوحة تحكم CDN.
لقد وقعنا في هذه الفخّة من قبل

١ · رمز الاستجابة من الخادم هو 200، لكن الصفحة تُظهر خطأً.النص البرمجي في الخلفية تم expires 7d التخزين المؤقت: بعد التحديث، ما زال المتصفح يُنفّذ البرامج النصية القديمة، والتي تنهار عند تحليل تنسيق البيانات الجديد، بينما يُبلغ blok catch أيضًا عن استثناء العرض كـ"عدم قدرة الخادم على القراءة"، مما يُضلّ اتجاه التشخيص تمامًا.

٢ · تعديل القاعدة: تعيين no-cache للنصوص البرمجية الخاصة بالخلفية بشكل منفصل.location = /assets/js/admin.js { add_header Cache-Control "no-cache"; }— تطابق الموقع الدقيق (exact match) يتفوّق على قواعد التخزين المؤقت الطويلة للوسائط الثابتة المبنية على التعبيرات النمطية.

3 · يجب توجيه رسائل الخطأ إلى مسارات مختلفة."البيانات وصلت لكن العرض فشل" و"فشل طلب الشبكة" يجب الإبلاغ عنهما كجملتين منفصلتين؛ وإلا فإن اتجاه التشخيص سيُضلّ لمدة يومين.

٤ · قاعدة بسيطة واحدة تكفي:يجب أن يرافق التخزين المؤقت الطويل رقم إصدار؛ ولا يُسمح أبدًا بالتخزين المؤقت الطويل للعناصر غير المزودة برقم إصدار.