في هذا الدرس 9تصفّح المواضيع
HTTP Caching
التخزين المؤقت HTTP
HTTP Caching التخزين المؤقت HTTP
تلعب شبكات تسليم المحتوى [CDN] دورًا مهمًا أيضًا من خلال الاحتفاظ بنسخ من المحتوى في المواقع التي يستخدمها المستخدمين، لتسهيل الوصول السريع مما يوفر تجربة استخدام سلسة.
يعتبر التخزين المؤقت لـ HTTP Caching أحد الركائز الأساسية لتحسين أداء الويب وتجربة المستخدم، وله أهمية كبيرة من عدة جوانب منها ما يلي:
- زيادة السرعة وتقليل التأخير: يقوم التخزين المؤقت بحفظ نُسخ من المحتوى الثابت [مثل الصور، وملفات CSS، وملفات JavaScript] والمحتوى القابل للتخزين مؤقتًا على خوادم التخزين المؤقت caches أو في المتصفحات. وهذا يقلل من زمن الاستجابة، حيث يمكن للمستخدمين تحميل هذه الموارد بسرعة من المخزن المؤقت بدلاً من إعادة تحميلها من الخادم الأصلي في كل مرة.
- تخفيف العبء على الخوادم: من خلال تقديم المحتوى المخزن مؤقتًا، يقلل النظام من عدد الطلبات الموجهة إلى الخادم الأصلي. وهذا يقلل الضغط على الخادم ويحسن من تحميله للموارد، مما يساعد في معالجة المزيد من الطلبات في وقت أقل.
- اقتصاد البيانات والنطاق الترددي: التخزين المؤقت يقلل من كمية البيانات التي يتم نقلها بين الخادم وعملاء الويب. وهذا مهم بشكل خاص للمستخدمين الذين لديهم حزم بيانات محدودة أو اتصال بطيء بالإنترنت.
- تحسين تجربة المستخدم: المستخدمون يتوقعون أن تكون صفحات الويب سريعة التحميل. والتخزين المؤقت يحسن سرعة تحميل الصفحة ويقلل من التأخير، مما يؤدي إلى تجربة أفضل وزيادة رضا المستخدمين.
- الفعالية من حيث التكلفة: تحسين الأداء من خلال التخزين المؤقت يمكن أن يوفر في تكاليف البنية التحتية، حيث يقلل من الحاجة إلى توسيع وتحسين القدرة على معالجة الطلبات بشكل مكلف.
- توفير الطاقة: يقلل من استهلاك الطاقة لكل من الخوادم والأجهزة العميلة، مما يسهم في استدامة البيئات الرقمية والحد من الأثر الكربوني.
?How does HTTP caching work
كيف يعمل التخزين المؤقت في HTTP؟
?How does HTTP caching work كيف يعمل التخزين المؤقت في HTTP؟
الطلب والاستجابة الأولية:
- عندما يطلب العميل [مثل متصفح الويب] موردًا من الخادم للمرة الأولى، يقوم الخادم بالاستجابة بالبيانات المطلوبة مع بعض رؤوسHTTP.
- قد تشمل هذه الرؤوس توجيهات التخزين المؤقت التي تُعلِم العميل أو الوسائط الوسيطة [مثل خوادم الوكيل] بكيفية ومدة تخزين الاستجابة.
رؤوس التحكم في التخزين المؤقت:
- يمكن للخادم أن يُضيف رأس"Cache-Control" مع توجيهات مثل "max-age`، التي تحدد المدة بالثواني التي يُعتبر فيها المورد حديثًا.
- تشمل التوجيهات الأخرى "public"، "private"، "no-cache"، و"no-store"، حيث يؤثر كل منها على سلوك التخزين المؤقت بطرق مختلفة.
التخزين في الذاكرة المؤقتة:
- بمجرد استلام الذاكرة المؤقتة [مثل متصفح الويب أو خادم الوكيل] الاستجابة، فإنها تخزن البيانات وفقًا للقواعد المحددة للتخزين المؤقت.
الطلبات اللاحقة:
- عندما يطلب العميل نفس المورد مرة أخرى، فإنه أولاً يحقق في ذاكرته إذا كانت هناك نسخة مخزنة لا تزال صالحة.
- إذا كانت هناك نسخة حديثة متاحة، فإنها ترجع البيانات المخزنة دون الاتصال بالخادم، مما يقلل من وقت التحميل وطلب الخادم.
التحقق من البيانات المخزنة:
- إذا كانت البيانات المخزنة قديمة أو تتطلب التحقق، قد يرسل التخزين المؤقت طلبًا شرطيًا باستخدام رؤوس مثل "If-Modified-Since" أو "If-None-Match".
- يمكن للخادم حينئذٍ أن يستجيب بحالة "304 Not Modified" إذا لم تتغير البيانات، مما يسمح للذاكرة المؤقتة باستخدام نسختها المخزنة.
انتهاء الصلاحية وإعادة التحقق:
- تنتهي صلاحية البيانات المخزنة بناءً على رؤوس التخزين المؤقت. بعد هذه الفترة، إما أن تقوم الذاكرة المؤقتة بجلب نسخة جديدة من الخادم أو إعادة التحقق من النسخة القديمة للتأكد من أنها لا تزال محدثة.
الشبكات الموزعة لخدمة المحتوى [CDNs] وتخزين الوكيل المؤقت:
- يمكن لشبكات التوزيع لخدمة المحتوى [CDNs] وذاكرات الوكيل المؤقتة تخزين الموارد أقرب إلى العميل، مما يقلل التأخير ويحسن وقت التحميل للمستخدمين المنتشرين عبر مناطق مختلفة.
HTTP Types of caches
أنواع التخزين المؤقت HTTP
HTTP Types of caches أنواع التخزين المؤقت HTTP
تحدد مواصفات تخزين HTTP المؤقت نوعين رئيسيين من التخزين المؤقت:
- التخزين المؤقت الخاص Private caches:
- التخزين المؤقت المشترك Shared cache:
HTTP Private caches
التخزين المؤقت الخاص HTTP
HTTP Private caches التخزين المؤقت الخاص HTTP
Enhance privacy in caching
يسمح بتخزين المحتويات مؤقتًا في المتصفح دون مشاركتها، معززًا الخصوصية.
Cache-Control: private
HTTP Shared cache
التخزين المؤقت المشترك HTTP
HTTP Shared cache التخزين المؤقت المشترك HTTP
التخزين المؤقت المشترك Shared Cache على الإنترنت يساعد في تحسين أداء الشبكة عن طريق تخزين محتوى الويب في مواقع متعددة، بحيث يمكن للمستخدم الوصول إلى البيانات بسرعة أكبر دون الحاجة للاتصال بالمصدر الرئيسي، يوفر ذلك فوائد مثل تسريع تحميل الصفحات وتقليل استهلاك عرض كمية البيانات، مما يحسن تجربة المستخدم ويخفف الضغط على الخوادم الأصلية.
قد يستخدم التخزين المشترك خوادم موزعة، لكن تعريفه أنه يخدم أكثر من مستخدم، ولا يشترط توزيعًا جغرافيًا أو اختيار أقرب موقع دائمًا، وللحفاظ على دقة المعلومات، يتم تحديث البيانات المخزنة وفقًا لسياسات محددة لضمان تقديم محتوى حديث للمستخدمين.
يمكن تصنيف ذاكرات التخزين المشتركة بشكلٍ أكبر إلى ذاكرات التخزين المؤقت للوكيل Proxy caches وذاكرات التخزين المدارة Managed Caches.
- ذاكرة التخزين المؤقت للوكيل Proxy caches: تعمل كوسيط بين المستخدم والخادم، حيث تقوم بتخزين البيانات المؤقتة لتسريع عملية الوصول إلى هذه البيانات عند طلبها مجددًا. هذا النوع من الذاكرة يعتبر مفيدًا لتحسين سرعة الاستجابة وتقليل الحمل على الخوادم الأساسية.
- ذاكرة التخزين المدارة Managed Caches: تقوم إدارة الشبكة أو الجهة المسؤولة عن النظام بالتحكم فيها مباشرةً. تُستخدم هذه الذاكرة للتخزين المؤقت للبيانات المهمة التي تحتاج إلى معالجة سريعة ودقيقة، مما يساعد في تحسين الأداء العام للنظام.
Make caching available to everyone
يسمح بتخزين المحتوى على نطاق واسع من قبل أي جهة لتسريع الوصول وتقليل الضغط على الخوادم.
Cache-Control: public
Force validation before use
يتطلب التحقق من الخادم الأصلي قبل استخدام النسخة المخزنة مؤقتًا لضمان أن المحتوى محدث دائمًا.
Cache-Control: no-cache
Prevent caching of sensitive data
يوجه مخازن HTTP المتوافقة إلى عدم تخزين الطلب أو الاستجابة المشمولة؛ لا يشفّر البيانات ولا يضمن الخصوصية أمام برمجيات خبيثة أو مخازن تتجاهل التوجيه.
Cache-Control: no-store
Set the cache validity period to 2 hours
يضبط صلاحية التخزين المؤقت للمحتوى لمدة ساعتين دون الحاجة للتحقق من الخادم الأصلي.
max-age يحدد مدة حداثة الاستجابة وفق عمرها Age، وليس مدة احتفاظ إلزامية على القرص؛ قد يحذفها المخزن قبل ذلك. وتتقدم عليه s-maxage في المخزن المشترك عند وجوده.
Cache-Control: max-age=7200
Check the validity of stored content before use
يلزم التحقق الناجح قبل إعادة استخدام الاستجابة بعد أن تصبح قديمة stale؛ لا يفرض التحقق عند كل استخدام وهي ما زالت حديثة fresh.
Cache-Control: must-revalidate
Proxy servers check the validity of content
يطبق شرط إعادة التحقق بعد انتهاء الحداثة على مخازن HTTP المشتركة فقط، ولا يفرضه على ذاكرة المتصفح الخاصة
Cache-Control: proxy-revalidate
Use the stored copy during the update for 1 minute
يسمح باستخدام الاستجابة القديمة حتى 60 ثانية بعد انتهاء حداثتها، مع محاولة التحقق في الخلفية؛ يضاف هذا الحد إلى مدة الحداثة ولا يعاد بدؤه مع كل طلب.
Cache-Control: stale-while-revalidate=60
Use stored content in case of error for 1 minute
يسمح عند أخطاء محددة باستخدام نسخة قديمة لا يزيد عمر تقادمها على 60 ثانية؛ يحسب الحد منذ صارت stale، لا منذ كل محاولة تحديث فاشلة.
Cache-Control: stale-if-error=60
"Improving performance with static caching routing"
يشير إلى أن الخادم لن يغيّر هذا التمثيل خلال مدة حداثته؛ بعد انتهاء المدة تعود قواعد إعادة التحقق المعتادة. لا يعني أن المحتوى ثابت إلى الأبد.
Cache-Control: immutable
HTTP Proxy caches
ذاكرة التخزين المؤقت للوكيل HTTP
HTTP Proxy caches ذاكرة التخزين المؤقت للوكيل HTTP
تساهم هذه المخابئ في تقليل استهلاك عرض النطاق الترددي، وتحسين فعالية الشبكات، وزيادة كفاءة قدرة الخادم على معالجة البيانات وتنفيذ العمليات الحسابية. وقد يضيف البروكسي ترشيحًا للمحتوى عند إعداده لذلك، لكن التخزين المؤقت وحده ليس فحصًا لسلامة المحتوى أو ضمانًا لأمن البيانات.
توفر هذه المخابئ الحلول التي تمكن الشبكات من العمل بفعالية أعلى، وتساهم في تسهيل تجربة المستخدم عند تصفح المواقع عبر الإنترنت.
HTTP Managed Caches
ذاكرة التخزين المدارة HTTP
HTTP Managed Caches ذاكرة التخزين المدارة HTTP
تختلف خصائص التخزين المؤقت المُدار اعتمادًا على الأداة المستخدمة، حيث يمكنك عادةً التحكم في سلوك التخزين المؤقت من خلال رأس التحكم في التخزين المؤقت وملفات التكوين الخاصة بك أو اللوحات التحكمية.
Cache API في Service Worker لا يطبق تلقائيًا كل قواعد مخزن HTTP في المتصفح؛ على التطبيق تنفيذ سياسة الحفظ والإبطال المناسبة.
HTTP Benefits of Caching
فوائد التخزين المؤقت HTTP
HTTP Benefits of Caching فوائد التخزين المؤقت HTTP
- تحسين الأداء والسرعة : يُعتبر التخزين المؤقت وسيلة فعّالة لتحسين سرعة تحميل الصفحات؛ فعند استخدام البيانات المخزنة مؤقتًا، يمكن تقليل الوقت المستغرق في جلب البيانات من الخادم الرئيسي هذا يؤدي إلى تسريع عرض الصفحات للمستخدمين.
- تقليل الحمل على الخوادم : عند استخدام التخزين المؤقت بكفاءة، يُمكن تقليل عدد الطلبات المقدمة إلى الخادم الرئيسي هذا يعني تقليل الحمل على الخوادم، مما يسمح بإدارة عدد أكبر من المستخدمين في نفس الوقت.
- توفير النطاق الترددي : مع تقليل عدد البيانات التي يجب جلبها من الخادم، يُمكن توفير استخدام النطاق الترددي، مما يقلل من التكاليف المرتبطة بالنقل وكذلك يوفر أداءً أكثر استدامة.
- تجربة مستخدم أفضل : بفضل سرعة التحميل وتحسين الأداء، يحصل المستخدمون على تجربة أفضل وأكثر سلاسة، خاصةً في التطبيقات والصفحات التي تعتمد على المحتوى الثقيل.
- الاتحاد مع شبكات التوصيل : يعمل التخزين المؤقت بشكل جيد مع شبكات توزيع المحتوى (CDN)، مما يساعد في توزيع المحتوى عبر مواقع جغرافية متعددة وزيادة سرعة التقديم للمستخدمين النهائيين.
- تحسين توافر المحتوى : إذا كان الخادم الأساسي غير متاح مؤقتًا، يمكن للمتصفح الاستمرار في عرض المحتوى المخزن مؤقتًا، مما يحسن من توافرية الخدمة.
عرض نسخة عند تعطل الخادم يخضع لتوجيهات التخزين وشروط السماح باستعمال stale؛ لا تسمح كل استجابة بذلك، ولا تتجاوز must-revalidate لمجرد انقطاع الشبكة.
HTTP Caching Headers
روؤس التخزين المؤقت لـ HTTP
HTTP Caching Headers روؤس التخزين المؤقت لـ HTTP
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.