سؤال

ما يمكن أن يكون الفرق بين if-mind - منذ ذلك الحين وإذا لم يكن أي مباراة؟ لدي شعور بأنه إذا تم استخدام أي تطابق لا يوجد في الملفات في حين يتم تعديلها - منذ ذلك نظرا للصفحات؟

هل كانت مفيدة؟

المحلول

فيما يتعلق بالاختلافات بين Last-Modified/If-Modified-Since و ETag/If-None-Match:

كلاهما يمكن استخدامه بالتبادل. ومع ذلك اعتمادا على نوع المورد، وكيف يتم إنشاؤه على الخادم أو السؤال الآخر أو السؤال الآخر ("تم تعديل هذا منذ ..." / "هل ما زال هذا يتطابق هذا ETAG؟") قد يكون من الأسهل الإجابة وبعد

أمثلة:

  • إذا كنت تخدم الملفات، باستخدام الملف mtime كما Last-Modified التاريخ هو أبسط الحل.
  • إذا كنت تخدم صفحة ويب ديناميكية مبنية من عدد من استفسارات SQL، فقد يكون التحقق مما إذا كانت البيانات التي تم إرجاعها بواسطة أي من هذه الاستعلامات قد تغير غير عملي (ما لم يكن لديك كل منهم نوعا من العمود "الأخير المعدل"). في هذه الحالة، باستخدام EG Hash MD5 لمحتوى الصفحة مثل ETag سيكون أسهل كثيرا.
    OTOH، وهذا يعني أنه لا يزال يتعين عليك توليد الصفحة بأكملها على الخادم، حتى للحصول على الحصول على حصول مشروط. معرفة ما يجب أن نذهب بالضبط للذهاب إلى ETAG (المفاتيح الأولية، أرقام المراجعة، ... إلخ) يمكن أن يوفر لك الكثير من الوقت هنا.

انظر هذه الروابط لمزيد من التفاصيل حول هذا الموضوع:

نصائح أخرى

If-Modified-Since مقارنة مع Last-Modified بينما If-None-Match مقارنة مع ETag. وبعد كلاهما Modified-Since و ETag يمكن استخدامها لتحديد البديل المحدد لمورد.

لكن مقارنة If-Modified-Since ل Last-Modified يمنحك المعلومات ما إذا كان البديل المخزن مؤقتا اكبر سنا أو أحدث في حين أن مقارنة If-None-Match ل ETag فقط يمنحك المعلومات ما إذا كانت كلاهما مطابق أم لا. علاوة على ذلك تفعل معظم ETag تتضمن المولدات معلومات النظام الخاصة بالنظام خاض لذلك نقل ملف إلى محرك أقراص مختلف قد يغير ETag أيضًا.

قيمة الطابع الزمني المستخدمة في آخر تعديل / إذا كان لها دقة محدودة - واحدة محدودة - ثانية واحدة وهذا ببساطة لا يكفي لمحتوى التغيير السريع مثل، على سبيل المثال، تطبيق دردشة الويب حيث يمكن نشر أكثر من رسالة واحدة في أي ثانية وبعد ETAG / IF-NONE-MATIS يمكن أن تساعد في حل هذه المشكلة.

كما هو مذكور في أفضل ممارسات Google:

من المهم تحديد واحدة من انتهاء الصلاحية أو التحكم في التخزين المؤقت في سن ماكس، وواحد من آخر تعديل أو إتيب، لجميع الموارد القابلة للتخبط. إنه أمر زائد لتحديد كل من انتهاء الصلاحية والتحكم في ذاكرة التخزين المؤقت: Max-Age، أو لتحديد كل من آخر تعديل و ETAG.

https:/developers.google.com/speed/docs/best-practices/caching.

إذا تم تعديلها منذ ذلك الحين يستخدم تاريخ، في حين إذا لم يكن أي مباراة يستخدم an. etag.. وبعد يمكن أن يستخدم كلاهما ل "الصفحات" (أي HTML) والملفات الأخرى.

ما لم ينص على أنه ضعيف من قبل الخادم، فإن ETAG يعتبر مدققا قويا، ويمكن استخدامه وبالتالي يمكن استخدامه لتخطيط طلب طرح مشروط. ومع ذلك، فإن معظم etags التي تم إنشاؤها تلقائيا تعرض صعوبات في مواقف مزرعة الخوادم، لأنها غالبا ما تستخدم معلومات ONODE و / أو عداد مستمر فريد. في الممارسة العملية، لقد وجدت أن آخر رأس معدل ليكون كافيا للمحتوى الثابت إلى حد ما، على سبيل المثال، حيث تخدم المحتوى الثابت المحمي، لأن وقت الكتابة في الملف يجعل منصة جيدة بشكل معقول.

eTag هو الأكثر مرونة. مطلوب عملاء مطابقين لإرسال ETAG في طلب شرطي، في حين أنهم يجب أن يرسلوا على حد سواء.

يتم استخدام رأس if-mindified - نظرا لأن رأسه لتحديد الوقت الذي استقبله المتصفح فيه المتصفح المورد المطلوب. يتم استخدام رأس if-None-None Match لتحديد علامة الكيان التي يتم إصدارها الخادم الصادر بالمورد المطلوب عند استلامه آخر مرة.

في الاتجاهين الموصوفتين، يتم استخدام هذه الرؤوس لدعم التخزين المؤقت للمحتوى داخل المتصفح، وتمكين الخادم من تعليمات المتصفح لاستخدام نسخة مخزنة مؤقتا من مورد، بدلا من الاستجابة بالمحتويات الكاملة للمورد إذا كان هذا هو ليس من الضروري.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top