التخزين المؤقت في HTTP

وصف تفصيلي لخيارات التخزين المؤقت المتاحة من خلال بروتوكول HTTP

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

يمكن أن تكون العديد من الموارد كبيرة جدًا ومكلفة للغاية من حيث الوقت والتكلفة الفعلية (على الهاتف المحمول ، على سبيل المثال) لاستردادها.

هناك استراتيجيات مختلفة للتخزين المؤقت يتم توفيرها بواسطة HTTP وتستخدمها المتصفحات.

لا تخزين مؤقت

لأول مرةCache-Controlيمكن أن يخبر الرأس المتصفح بعدم استخدام نسخة مخبأة من أحد الموارد مطلقًا دون التحقق أولاً من قيمة ETag (المزيد حول هذا لاحقًا) ، باستخدامno-cacheالقيمة:

Cache-Control: no-cache

أكثر تقييدًاno-storeيخبر الخيار المتصفح (وجميع أجهزة الشبكة الوسيطة) بعدم تخزين المورد في ذاكرة التخزين المؤقت الخاصة به:

Cache-Control: no-store

لوCache-Controlلديهmax-ageالقيمة ، تُستخدم لتحديد عدد الثواني التي يكون فيها هذا المورد صالحًا كذاكرة تخزين مؤقت:

Cache-Control: max-age=3600

الExpiresرأس

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

إذا كان هناك ، فإنه يتحقق من الصفحةنضارة.

تكون الصفحة حديثة إذا كان الملفاستجابة HTTPExpiresرأسالقيمة أقل من التاريخ والوقت الحالي.

يأخذ رأس انتهاء الصلاحية هذا النموذج:

Expires: Sat, 01 Dec 2018 16:00:00 GMT

GET الشرطية

هناك طرق مختلفة لإجراء الحصول الشرطي. كلها تستند إلى استخدامIf-*رؤوس الطلب:

  • استخدامIf-Modified-SinceوLast-Modified
  • استخدامIf-None-MatchوETag

استخدامIf-Modified-SinceوLast-Modified

يمكن للمتصفح إرسال طلب إلى الخادم وبدلاً من مجرد طلب الصفحة ، فإنه يضيف ملفIf-Modified-Sinceرأس، على أساسLast-Modifiedقيمة رأس الصفحة التي حصلت عليها من الصفحة المخبأة حاليًا.

يخبر هذا الخادم بإرجاع نص استجابة فقط (محتوى الصفحة) إذا تم تحديث المورد منذ ذلك التاريخ.

خلاف ذلك ، يقوم الخادم بإرجاع ملف304 Not Modifiedاستجابة.

استخدامIf-None-MatchوETag

يمكن لخادم الويب (بناءً على الإعداد وكيفية تقديم الصفحة وما إلى ذلك) إرسال ملفرأس ETag.

هذا هو معرف المورد. في كل مرة يتغير المورد ، على سبيل المثال يتم تحديثه ، يجب تغيير ETag أيضًا.

إنه مثل المجموع الاختباري.

يرسل المتصفح ملفIf-None-Matchرأسالذي يحتوي على قيمة ETag واحدة (أو أكثر).

إذا لم يكن هناك تطابق ، فسيعرض الخادم الإصدار الجديد من المورد ، وإلا فإن ملف304 Not Modifiedاستجابة.


المزيد من دروس الشبكة: