ما هي الهدف من IF-unmodified-since/if-modified-since؟ ألا تحل محلها etags؟

StackOverflow https://stackoverflow.com/questions/2126807

سؤال

يبدو أن هناك طريقتان متميزتان لتنفيذ الطلبات الشرطية باستخدام رؤوس HTTP ، وكلاهما يمكن استخدامهما لتخزين التخزين المؤقت ، وطلبات النطاق ، والتحكم في التزامن وما إلى ذلك::

  1. إذا لم يتم التعدّض-و-المعدّد, ، حيث يرسل العميل ملف الطابع الزمني من المورد.
  2. إذا تم تعديله وما إذا لم يكن معدلًا, ، حيث يرسل العميل etag تمثيل المورد.

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

لا أفهم سبب توفر نهجين منفصلين. من المؤكد أن ETAGs تحل محل الطوابع الزمنية ، حيث يمكن أن يختار الخادم بسهولة إنشاء ETAGs من الطوابع الزمنية.

لذلك ، أسئلتي هي:

  • في أي سيناريوهات يمكن أن تفضل ما إذا لم يتم التعدّض/المعدّل-المعدّد على etags؟
  • في أي سيناريوهات قد تحتاجها على حد سواء؟
هل كانت مفيدة؟

المحلول

لقد فكرت ذات مرة في نفس الشيء ، وأدركت أن هناك اختلافًا مهمًا مهمًا للغاية: يمكن طلب التواريخ ، لا يمكن أن تتوخيل.

هذا يعني أنه إذا تم تعديل بعض الموارد قبل عام ، ولكن ليس منذ ذلك الحين ، ونحن نعرف ذلك. بعد ذلك ، يمكننا الإجابة بشكل صحيح على طلب IF-UNMODIDE-SINK للتواريخ التعسفية في العام الماضي ونوافق على ذلك بالتأكيد ... لم يتم تعديله منذ ذلك التاريخ.

ETAG قابلة للمقارنة فقط للهوية. إما أنه هو نفسه أو أنه ليس كذلك. إذا كان لديك نفس المورد على النحو الوارد أعلاه ، وخلال السنة تم نقل Docroot إلى قرص جديد ونظام الملفات ، مع إعطاء جميع الملفات inodes جديدة ولكن الحفاظ على تواريخ التعديل. وقد استند شخص ما إلى رقم etags على رقم inode للملف. بعد ذلك ، لا يمكننا القول أن ETAG القديم لا يزال على ما يرام ، دون وجود سجل من الساقين في الماضي.

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

إذا كان لديك صفحة ويب ديناميكية تحتوي على بيانات من الكثير من عمليات البحث عن ديسيبل ، فقد يكون من الصعب معرفة ما هو التاريخ المعدل الأخير دون جعل قاعدة البيانات الخاصة بك تحتوي على الكثير من تواريخ التعديل. ولكن يمكنك دائمًا إجراء اختبارات MD5 للصفحة التي تم تقديمها.

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

نصائح أخرى

هناك فرق كبير إلى حد ما: لا يمكنني استخدام ETAGS إلا إذا طلبت بالفعل الخادم لواحد في الماضي. الطوابع الزمنية ، Otoh ، يمكنني أن أتعويض مع تقدمي.

سبب بسيط: التوافق المتخلف.

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