التخزين المؤقت لـSEO
كيف يحسن التخزين المؤقت للمتصفح والخادم باستخدام Cache-Control وETag وCDNs الأداء وCore Web Vitals، وأخطاء التخزين المؤقت التي تؤثر في الزحف.
اللغات
يخزن التخزين المؤقت نسخة من صفحة أو مورد — في المتصفح أو عند حافة CDN أو في ذاكرة الزاحف — كي لا يعاد توليده أو تنزيله. وليس عامل ترتيب مباشرًا، لكنه يغذي شيئين مهمين: سرعة الصفحة/Core Web Vitals (عبر TTFB وLCP) وكفاءة الزحف. لا يحترم زاحف Google إلا ETag وLast-Modified (مع قراءة max-age كتلميح لإعادة الزحف) — ويفضل ETag، و«توجيهات التخزين المؤقت الأخرى عبر HTTP غير مدعومة». وأخطر أخطاء التخزين ليست مددًا بطيئة، بل إعدادات CDN خاطئة وذاكرات قديمة تحجب الروبوتات أو تضللها.
Evidence for this claim HTTP caching uses Cache-Control and validators to control reuse and revalidation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP caching Evidence for this claim Browser caches can reuse stored responses according to HTTP caching semantics. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP cachingالخلاصة — التخزين المؤقت هو حفظ نسخة من صفحة أو ملف كي لا يضطر النظام إلى بنائه وإرساله من الصفر مرة أخرى. فهو يجعل موقعك أسرع للناس ولروبوتات البحث، ويتيح للروبوتات تخطي إعادة تنزيل الصفحات التي لم تتغير. لن يرفعك التخزين المؤقت في الترتيب بمفرده — لكن السرعة التي يشتريها وكفاءة الزحف التي يتيحها تساعدان بصورة غير مباشرة.
ما هو التخزين المؤقت
كلما فتح شخص صفحة، اضطر الخادم إلى العمل: بناء HTML، وإرسال الصور، وشحن CSS وJavaScript. ويخزن التخزين المؤقت نسخة جاهزة من هذه الأشياء كي تعيد الزيارة التالية استخدامها بدل تنفيذ العمل كله من جديد.
هناك ثلاثة أماكن يمكن أن تعيش فيها نسخة تهم SEO:
- ذاكرة المتصفح المؤقتة — ملفات محفوظة على جهاز الزائر نفسه، كي تُحمّل مشاهدة الصفحة الثانية أو الزيارة اللاحقة شبه فورًا.
- ذاكرة CDN المؤقتة (الحافة) — نسخ محفوظة على خوادم موزعة حول العالم، كي يُخدم الملف من مكان قريب ماديًا من المستخدم (أو الروبوت) بدل خادم الأصل الوحيد.
- ذاكرة الزاحف المؤقتة — يتذكر Googlebot وBingbot ما إذا كانت الصفحة قد تغيرت منذ المرة السابقة، ويتخطيان إعادة تنزيلها إن لم تتغير.
لماذا يهم ذلك لـSEO
سببان، ومن المفيد إبقاؤهما منفصلين:
- السرعة. يساعد التسليم الأسرع مؤشرات Core Web Vitals لديك — خصوصًا سرعة استجابة الخادم (TTFB) وسرعة ظهور المحتوى الرئيسي (LCP). والسرعة جزء من إشارات تجربة الصفحة لدى Google.
- كفاءة الزحف. عندما يعرف الروبوت أن الصفحة لم تتغير، لا يهدر تنزيلًا عليها. وفي موقع كبير، يتيح ذلك للروبوت إنفاق وقته على الصفحات الجديدة والمحدثة بدلًا منها.
الشيء الوحيد الذي يجب ضبطه
«ذاكرة Google المؤقتة» و«التخزين المؤقت عبر HTTP» شيئان مختلفان. أُوقفت أداة البحث القديمة cache: — ميزة «عرض النسخة المحفوظة من هذه الصفحة لدى Google» — في 2024. ولا علاقة لذلك بالتخزين المؤقت الذي يتناوله هذا المقال. ما زالت ترويساتا Cache-Control وETag حيتين ومهمتين. وغياب «نسخة مؤقتة» لصفحتك في Google لا يقول شيئًا عن صحة إعداد التخزين المؤقت لديك.
ما الذي ينبغي فعله عمليًا
- خزّن ملفاتك الثابتة (الصور وCSS وJavaScript والخطوط) مؤقتًا مدة طويلة.
- أضف أسماء ملفات ذات إصدارات أو تجزئات كي تحدثها فورًا عند الحاجة.
- استخدم CDN كي تُحمّل الملفات من مكان قريب من مستخدميك.
- لا تسمح عرضًا لذاكرة مؤقتة قديمة أو مشتركة بتقديم الشيء الخطأ للروبوتات (وهو نمط الفشل المخيف — انظر علامتي التبويب Advanced وAnti-patterns).
أتريد التفاصيل على مستوى الترويسة — توجيهات Cache-Control، وETag مقابل Last-Modified، وقصة معدل زحف CDN، وأخطاء التخزين المؤقت التي تكسر الزحف؟ فانتقل إلى علامة التبويب Advanced.
Evidence for this claim Google's crawler documentation supports ETag/If-None-Match and Last-Modified/If-Modified-Since, prefers ETag when both are present, and says other HTTP caching directives are unsupported; Google's separate max-age advice is a recrawl-timing hint, not proof it follows browser cache semantics. Scope: Google crawling Confidence: high · Verified: Crawling December: HTTP caching Evidence for this claim HTTP caching uses Cache-Control and validators to control reuse and revalidation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP caching Evidence for this claim Browser caches can reuse stored responses according to HTTP caching semantics. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP cachingالخلاصة — يعمل التخزين المؤقت على ثلاث طبقات تهم SEO: المتصفح، وحافة CDN، وذاكرة طلبات الزاحف الشرطية الخاصة به. وهو ليس عامل ترتيب، لكنه يدفع سرعة الصفحة (TTFB/LCP، ومؤشرات Core Web Vitals عند التنقل المتكرر عبر bfcache) وكفاءة الزحف. يفضل زاحف Google ETag على Last-Modified، ويقرأ
max-ageكتلميح لإعادة الزحف فقط، ووفق وثائقه «توجيهات التخزين المؤقت الأخرى عبر HTTP غير مدعومة». وتكسب CDNs سماحًا بمعدل زحف أعلى، لكن بعد أن تصبح ذاكرتها دافئة؛ أما المخاطر الحقيقية فهي إطلاقات الذاكرة الباردة وإعدادات CDN/WAF الخاطئة التي تحجب الروبوتات تمامًا.
طبقات التخزين المؤقت الثلاث
التخزين المؤقت لـSEO ليس شيئًا واحدًا — بل ثلاثة أشياء، يتحكم كل منها بطريقة مختلفة قليلًا:
- ذاكرة المتصفح المؤقتة — يخزن جهاز الزائر الملفات كي تتخطى المشاهدات المتكررة الشبكة. وهذا ما تكرر PageSpeed Insights التنبيه إليه بعبارة «قدّم الأصول الثابتة بسياسة تخزين مؤقت فعالة».
- ذاكرة CDN/الحافة — تخزن شبكة توصيل المحتوى نسخًا في عقد حافة حول العالم (انظر التعمق في CDN وSEO للتفاصيل). ووصف Google نفسه يقول إن CDNs وسيط بين الأصل والمستخدم، وإن أكبر تركيز تاريخي لها هو التخزين المؤقت — أي حفظ محتوى URL كي لا يضطر خادمك إلى خدمة الملف نفسه مدة من الوقت.
- ذاكرة الزاحف المؤقتة — يحتفظ Googlebot وBingbot بسجل خاصهما عما إذا تغير المحتوى، باستخدام الطلبات الشرطية. وهذه هي رافعة ميزانية الزحف؛ أما آلياتها فتخص التعمق في الطلبات الشرطية، وسأبقيها هنا في مستوى الملخص.
«ذاكرة المتصفح المؤقتة» أعلاه اختصار لأكثر من آلية. ووفق دليل MDN للتخزين المؤقت عبر HTTP، من المفيد معرفة الفرق بين ذاكرة HTTP الخاصة (لكل متصفح، ومفهرسة بحسب الطلب، ومقسمة في المتصفحات الحديثة بحسب الموقع الأعلى للحد من التتبع عبر المواقع)، والذاكرة الموجودة في RAM للجلسة الحالية، وbfcache المشروحة أدناه، و — منفصلة عنها — Cache Storage الخاصة بعامل الخدمة، التي يتحكم فيها JavaScript الخاص بالموقع ولا تتحكم فيها ترويسات Cache-Control مباشرةً. وقد تعني عبارة «تحقق من ذاكرة المتصفح» أربع خطوات تصحيح مختلفة بحسب الآلية التي تتعطل فعليًا.
لماذا يغذي التخزين المؤقت Core Web Vitals
إن جلب الموارد عبر الشبكة بطيء ومكلف. ويزيل التخزين المؤقت زمن تأخر الشبكة وتكلفة النقل لأي شيء لم يتغير. وينعكس ذلك مباشرةً على مقياسين قريبين من المؤشرات: TTFB (فالاستجابة المخزنة مؤقتًا تتخطى إعادة التوليد عند الأصل) وLCP (فالصور وCSS والخطوط المخزنة مؤقتًا تُعرض أسرع).
Cache-Control، في التوجيهات المهمة
Cache-Control هي الترويسة الرئيسية. وهذه التوجيهات تستحق المعرفة:
max-age=<seconds>— مدة صلاحية النسخة الجديدة. وبالنسبة إلى الأصول غير القابلة للتغيير ذات الإصدارات، توصي وثائق Lighthouse في Chrome بالتخزين لسنة أو أكثر — مثلًاCache-Control: max-age=31536000.no-cache— ليست «لا تخزن». معناها «خزنها، لكن أعد التحقق مع الخادم قبل إعادة استخدامها». وهي لا تزال تتيح تدفق 304 الخفيف.no-store— التوجيه الذي يعني فعلًا عدم تخزين أي نسخة في أي ذاكرة مؤقتة عبر HTTP. إنه توجيه تخزين مؤقت لا مفتاح خصوصية عام — فوفق RFC 9111 ليس طريقة موثوقة لمحو سجل المتصفح، ولا يقول شيئًا عن Cache Storage الخاصة بعامل الخدمة.public/private— هل تستطيع الذاكرات المشتركة (مثل CDN) تخزين الاستجابة، أم لا يستطيع ذلك إلا متصفح المستخدم النهائي.immutable— تخطَّ إعادة التحقق تمامًا ما دامت الاستجابة جديدة. ولا يعني ذلك «لن تصبح قديمة أبدًا» — فعند انتهاءmax-ageتعود قواعد الجدة العادية.must-revalidate— الطرف المقابل في الخط الزمني: لا يهم إلا بعد أن تصبح الاستجابة قديمة، ويخبر الذاكرة بضرورة إعادة التحقق مع الأصل بدل تقديم النسخة القديمة على أي حال.s-maxageوstale-while-revalidateوstale-if-error— ضوابط أدق أساسًا لـCDNs والذاكرات المشتركة الأخرى (عمر جدة منفصل للذاكرات المشتركة، وإعادة استخدام قديم محدودة أثناء جلب في الخلفية، وإعادة استخدام قديم محدودة عند خطأ الأصل). يختلف الدعم بحسب المتصفح/CDN، فتحقق من الدعم الحالي قبل الاعتماد عليها — ولا يحترم زاحف Google مجموعة التوجيهات الإضافية هذه، كما سنرى.
منع التخزين المؤقت بأسماء ملفات ذات إصدارات
الحيلة التي تتيح لك التخزين المؤقت المكثف والتحديث الفوري: ضع تجزئة المحتوى في اسم الملف — style.x234dff.css. وبما أن URL هو مفتاح الذاكرة المؤقتة، فإن تغيير الملف يغير URL، فتجلب الذاكرات النسخة الجديدة فورًا بينما تظل النسخ القديمة مخزنة ما تشاء. ويصف كل من دليل web.dev لذاكرة HTTP والكتابة الهندسية الخاصة بالواجهة الأمامية في Bing النمط نفسه — إذ تجزئ Bing محتوى الملف في URL كي “the URL acts as the cache key,” (ترجمة) «يعمل URL بوصفه مفتاح الذاكرة المؤقتة»، ما يبقي الذاكرات متسقة ويسمح بمدد انتهاء طويلة.
فخ bfcache — حيث يضر no-store بمؤشرات CWV بهدوء
إليك نقطة لا تحظى بتغطية كافية. ذاكرة الرجوع/التقدم (bfcache) هي ما يجعل الضغط على «رجوع» يعيد الصفحة فورًا. وتتخطى استعادة bfcache قياس LCP/CLS/INP بالكامل، لذلك فهي مكسب صافٍ لبيانات CrUX الحقلية. لكن وفق دليل Google لـbfcache، جعل Cache-Control: no-store في وثيقة الصفحة نفسها المتصفحات ترفض تاريخيًا تخزين الصفحة في bfcache. فإذا كنت تحتاج إلى الجدة في وثيقة HTML ولا تريد التضحية بأهلية ذاكرة الرجوع/التقدم، فاستخدم no-cache أو max-age=0 بدلًا من no-store.
كيف تقرر الذاكرة أن المحتوى «جديد بما يكفي»
قبل إشراك أي أداة تحقق، تفحص الذاكرة الجدة: هل تجاوز عمر الاستجابة المخزنة مدة الجدة التي منحتها Cache-Control (أم — عند غياب عمر صريح — مدة استدلالية يُسمح للذاكرة بتخمينها)؟ وتبلغ ترويسة استجابة Age المدة التي احتفظت فيها ذاكرة مشتركة بالاستجابة، وبذلك تعرف — في أدوات المطور أو من سجل CDN — مقدار مدة الجدة المتبقية. إذا كانت جديدة، يمكن للذاكرة إعادة استخدامها فورًا بلا أي طلب. وإذا كانت قديمة، ينبغي أن تتحقق قبل إعادة الاستخدام؛ وهنا بالضبط تكسب ETag/If-None-Match وLast-Modified/If-Modified-Since قيمتها — وسنصف ذلك لاحقًا، في النسخة الأضيق من آلية HTTP العامة الخاصة بـGooglebot.
كيف يستخدم Googlebot التخزين المؤقت (زاوية كفاءة الزحف)
قدمت Google طلبًا مباشرًا على نحو غير معتاد في منشور ديسمبر الزحف: التخزين المؤقت عبر HTTP في ديسمبر 2024: فعّل التخزين المؤقت كي تتخطى زواحفها إعادة تنزيل الصفحات التي لم تتغير. والنقطة اللافتة في المنشور أن الجلب القابل للتخزين المؤقت كان ينخفض — نحو 0,026 % من إجمالي عمليات الجلب كان قابلًا للتخزين المؤقت قبل 10 سنوات، واليوم تبلغ النسبة 0,017 %. أرقام صغيرة، لكن Google تريد بوضوح أن تتحرك في الاتجاه الآخر.
ETag مقابل Last-Modified — أيهما تفضل Google
تدعم بنية زحف Google أداتي التحقق القياسيتين: ETag (مع If-None-Match) وLast-Modified (مع If-Modified-Since). وتوصي Google بشدة باستخدام ETag لأن قيمته غير منظمة، ولذلك أقل عرضة لأخطاء التحليل التي تستدعيها سلسلة التاريخ — وإذا وُجد الاثنان، فإن زواحفها تستخدم قيمة ETag كما يقتضي معيار HTTP. ومع ذلك تقترح Google ضبط الاثنين، لأن تطبيقات أخرى مثل CMS تستخدمهما. وإذا استخدمت Last-Modified، فيجب أن يتبع التاريخ تنسيق HTTP (مثل Fri, 4 Sep 1998 19:15:56 GMT) وإلا فلن يُحلل.
عندما يظل أداة التحقق المخزنة لدى الزاحف مطابقة، يعيد خادمك 304 Not Modified بلا جسم — وهذه هي الفكرة كلها. وكما تقول Google، يعني غياب الجسم أن خادمك لا ينفق قدرة حوسبة على توليد المحتوى ولا ينفق نطاقًا تردديًا على نقله. (وتغطي مقالة الطلبات الشرطية هذه الآلية بعمق بوصفها آلية ميزانية الزحف؛ ويكفي هنا أن تعرف أنها موجودة وتوفر المال على الجانبين.)
التفصيل الذي يفوته الجميع تقريبًا
لا يتصرف زاحف Google وفق مجموعة توجيهات Cache-Control الكاملة كما يفعل المتصفح أو CDN. فوفق نظرة الزاحف الرسمية، لا يدعم — إلى جانب ETag/Last-Modified — «توجيهات التخزين المؤقت الأخرى عبر HTTP». والاستثناء الجزئي الوحيد هو أن Google تقول إنك تستطيع ضبط max-age اختياريًا لمساعدة الزواحف في تحديد موعد إعادة زحفها إلى URL — وهو تلميح لإعادة الزحف لا قفل صارم. لذلك لا تزال no-cache وs-maxage وstale-while-revalidate وما شابهها تشكل سلوك المتصفح وCDN، لكنها لا تغير طريقة تخزين Googlebot المؤقت. ونصيحة Google حول وقت الإبطال منطقية: اطلب تحديث الذاكرة عند التغييرات المهمة — فتحديث تاريخ حقوق النشر في التذييل وحده ليس مهمًا.
CDNs والزحف
يشتري لك CDN أكثر من السرعة. وتقول Google إن “Our crawling infrastructure is designed to allow higher crawl rates.” (ترجمة) «صُممت بنية زحف Google للسماح بمعدلات زحف أعلى»، وذلك للمواقع المدعومة بـCDN، وتستنتج ذلك من عنوان IP الذي يخدم عناوين URL — إذ تفترض أن أصلًا مدعومًا بـCDN يستطيع التعامل مع طلبات متزامنة أكثر.
لكن هناك نقطة تستحق التخطيط: الذاكرة الباردة. عند أول وصول إلى URL تكون ذاكرة CDN «باردة» — فلا أحد طلبه بعد، ولذلك لا يزال على الأصل خدمته مرة واحدة على الأقل لتدفئة الذاكرة. وتحذر Google من أن إطلاق عناوين URL كثيرة دفعة واحدة يمثل عبئًا حقيقيًا على ميزانية الزحف، مع معدل زحف مرتفع لبضعة أيام. فإذا كنت تطلقًا كبيرًا أو ترحّل موقعًا، فخطط لتحمل الأصل الحمل الكامل لكل URL قبل أن يبدأ CDN بالمساعدة.
إعداد CDN الخاطئ خطر على الزحف
أكثر المشكلات المخيفة القريبة من التخزين المؤقت ليست مددًا بطيئة — بل إعدادات CDN وWAF التي تحجب الروبوتات. وتوضح مقالة Google عن CDN أن إرسال 503/429 هو الطريقة المفضلة للإشارات إلى الحجب المؤقت، بينما تُعامل مهلات الشبكة بوصفها أخطاء نهائية «قاسية» قد تزيل عناوين URL من الفهرس. أما الدقيقة فهي الحجب الناعم: صفحة وسيطة للتحقق من الروبوت. لا يرى الزاحف إلا صفحة التحدي لا موقعك — ولذلك توصي Google بشدة بإعادة 503 إلى العملاء الآليين بدلًا من ذلك. وأسهل طريقة للتحقق من أن CDN لا يحجب Google سرًا هي أداة فحص URL في Search Console — انظر إلى الصورة المعروضة؛ فإذا أظهرت تحدي روبوت أو صفحة فارغة، فتحدث إلى CDN.
أنا من محبي تفويض عمليات إعادة التوجيه إلى CDN. وقد وصفت ذلك في بودكاست Marketing Speak بأنه “One of my personal favorites that I don’t think it’s used enough, it’s actually just off loading your redirects to the CDN level.” (ترجمة) «إحدى المفضلات الشخصية لدي التي لا أظن أنها تُستخدم بما يكفي: تفريغ عمليات إعادة التوجيه إلى مستوى CDN.» (الانتقال إلى الاقتباس)
أخطاء التخزين المؤقت التي تضر الزحف والفهرسة
هذه هي الزاوية التي تتخطاها معظم مقالات «التخزين المؤقت لـSEO». فالذاكرة المؤقتة لا تجعل الأشياء سريعة فقط — ويمكن لذاكرة خاطئة أن تقدم البايتات الخطأ إلى روبوت وتكسر الزحف أو الفهرسة.
حالة حقيقية: ذاكرة مشتركة تقدم robots.txt حاجبًا. بحثت في حالة حجب متقطع لـGooglebot، وتبين أنها تعود إلى ذاكرة CDN مشتركة بين بيئة اختبار والموقع الحي. وكما كتبت في مفهرسة رغم حجبها بواسطة robots.txt: “One possible cause would be a shared cache between a test environment and a live environment. When the cache from the test environment is active, the robots.txt file may include a blocking directive.”
(ترجمة) «قد يكون أحد الأسباب المحتملة ذاكرة مشتركة بين بيئة اختبار وبيئة حية. وعندما تكون ذاكرة بيئة الاختبار نشطة، قد يتضمن ملف robots.txt توجيهًا حاجبًا.» وكان الحل فصل الذاكرة — أو استبعاد ملفات .txt من الذاكرة في بيئة الاختبار. تسبب إعداد خاطئ للتخزين المؤقت مباشرةً في فشل زحف؛ وهذا هو نوع الخطر الذي يعض فعلًا.
مشكلات أخرى من العائلة نفسها:
- ذاكرة CDN قديمة تقدم محتوى منتهي الصلاحية إلى الروبوتات. إذا احتفظت ذاكرة الحافة بنسخة قديمة بعد وقت طويل من نشر تغيير، فستستمر الروبوتات في رؤية النسخة القديمة. أفرغ الذاكرة عند النشر، أو اربط عمرها بعدد مرات تغير الصفحة فعليًا.
- تجزئة ذاكرة
Vary/ User-Agent. يكون مفتاح الذاكرة المشتركة عادةً URL وحده؛ ويضيفVaryترويسات الطلب (مثلUser-AgentأوAccept-Language) إلى ذلك المفتاح كي تُخزن النسخ المختلفة منفصلة. إذا أسقطت ترويسة تغير الاستجابة فعلًا، فقد يحصل طالب على نسخة طالب آخر — خلط المحمول/سطح المكتب أو الروبوت/الإنسان. وإذا أضفت ترويسات كثيرة إلىVary، جزأت الذاكرة إلى مفاتيح متشابهة كثيرة بحيث لا تحسن معدل الإصابة إلا قليلًا. ومنفصلًا عن ذلك، تقسم المتصفحات الحديثة ذاكرتها الخاصة أيضًا بحسب الموقع الأعلى للخصوصية، ولذلك لا يعاد استخدام مورد مخزن أثناء تضمينه في موقع عادةً عند تضمينه في موقع آخر — وهي آلية مختلفة عنVary، فلا تخلط بينهما عند تصحيح تقرير «لماذا لم يُخزن هذا؟».
تأتي قاعدتي العامة التقريبية للمدة من عمل LCP: كما قلت في دليلي على Ahrefs عن Largest Contentful Paint، “Your cache time should be as long as you are comfortable with” (ترجمة) «ينبغي أن تكون مدة التخزين المؤقت طويلة بقدر ما تشعر معه بالارتياح.» (الانتقال إلى الاقتباس) — و*“An ideal setup is to cache for a really long period of time but purge the cache when you make a change to a page.”* (ترجمة) «الإعداد المثالي هو التخزين المؤقت لفترة طويلة جدًا، مع إفراغ الذاكرة المؤقتة عند إجراء تغيير على صفحة.» تخزين طويل، وإفراغ فوري. وهذه التركيبة هي ما يبقيك سريعًا وجديدًا في آن واحد.
هل التخزين المؤقت عامل ترتيب؟
لا — ليس مباشرةً. لا توجد إشارة ترتيب لمجرد ضبط ETags أو سياسة Cache-Control جيدة. ما يفعله التخزين المؤقت هو تغذية شيئين مهمين للظهور: سرعة الصفحة/Core Web Vitals (مدخل صريح لتجربة الصفحة) وكفاءة الزحف (التي تحدد سرعة اكتشاف المحتوى الجديد والمحدث وتحديثه، فتلامس النتائج الحساسة للجدة بصورة غير مباشرة). اضبطه لأنه يجعل موقعك سريعًا وسهل الزحف — لا لأنك تتوقع زيادة مباشرة في الترتيب.
ملخص الذكاء الاصطناعي
خلاصة مكثفة للنسخة المتقدمة:
- التخزين المؤقت = ثلاث طبقات لـSEO: ذاكرة المتصفح، وذاكرة CDN/الحافة، وذاكرة الطلبات الشرطية الخاصة بالزاحف. ولكل منها طريقة تحكم مختلفة قليلًا.
- ليس عامل ترتيب — لكنه يدفع شيئين مهمين: سرعة الصفحة (TTFB/LCP، ومؤشرات التنقل المتكرر عبر bfcache) وكفاءة الزحف.
- أساسيات
Cache-Control: يحددmax-ageالجدة (سنة أو أكثر للأصول غير القابلة للتغيير ذات الإصدارات)؛ وno-cacheتعني «خزن لكن أعد التحقق» لا «لا تخزن»؛ وno-storeتعني عدم التخزين إطلاقًا؛ وتتحكمpublic/privateفي الذاكرات المشتركة/CDN. - منع التخزين المؤقت: ضع تجزئة المحتوى في اسم الملف كي تخزن بكثافة وتحدث فورًا (وتستخدم Google وBing هذا النمط).
- فخ bfcache: يمكن لـ
Cache-Control: no-storeفي وثيقة HTML أن يحرم الصفحة من ذاكرة الرجوع/التقدم، فيضر مؤشرات CrUX بهدوء. استخدمno-cacheأوmax-age=0بدلًا منه. - لا يحترم Googlebot إلا ETag وLast-Modified (يفضل ETag، ويقرأ
max-ageكتلميح لإعادة الزحف). ووفق Google، «توجيهات التخزين المؤقت الأخرى عبر HTTP غير مدعومة». وتعيد أداة تحقق مطابقة304 Not Modifiedبلا جسم، ما يوفر الحوسبة والنطاق الترددي. - تكسب CDNs سماحًا بمعدل زحف أعلى — لكن بعد تدفئة الذاكرة. وتصل الإطلاقات الباردة إلى الأصل مرة لكل URL؛ فخطط لذلك في الإطلاقات والترحيلات الكبيرة.
- الخطر الأكبر ليس التخزين البطيء — بل إعداد CDN/WAF خاطئ يحجب الروبوتات (أعد 503/429 للحجب المؤقت وراقب الصفحات الوسيطة للحجب الناعم)، وذاكرات قديمة/مشتركة تقدم المحتوى الخطأ (مثل robots.txt حاجب).
الوثائق الرسمية
وثائق المصدر الأول من محركات البحث وفرق أدواتها.
- ديسمبر الزحف: التخزين المؤقت عبر HTTP — منشور Gary Illyes في ديسمبر 2024: ETag مقابل Last-Modified، وآليات 304، وإحصاء انخفاض عمليات الجلب القابلة للتخزين المؤقت، وتلميح إعادة الزحف
max-age. - نظرة عامة على Google Crawler (User Agent) — قسم التخزين المؤقت عبر HTTP — المرجع الحي: قاعدة المفاضلة بين ETag والسطر «توجيهات التخزين المؤقت الأخرى غير مدعومة».
- ديسمبر الزحف: شبكات CDN والزحف — Splitt وIllyes عن تخزين CDN المؤقت، وسماح معدل الزحف الأعلى، والإطلاقات الباردة، والحجب القاسي مقابل الناعم.
- قدّم الأصول الثابتة بسياسة تخزين مؤقت فعالة — تدقيق Lighthouse/PageSpeed وإرشاد «سنة أو أكثر» للأصول غير القابلة للتغيير.
- امنع طلبات الشبكة غير الضرورية باستخدام ذاكرة HTTP — مرجع التوجيهات ونمط منع التخزين المؤقت باسم الملف ذي التجزئة.
- ذاكرة الرجوع/التقدم (bfcache) — لماذا قد تكلف
no-storeفي وثيقة HTML أهلية bfcache. - فهرس سلسلة Crawling December — السلسلة الكاملة لعام 2024: Googlebot والتخزين المؤقت عبر HTTP والتنقل متعدد الأوجه وCDNs.
Bing / Microsoft
- أداء الواجهة الأمامية السريع لـMicrosoft Bing — فريق Bing الهندسي عن تجزئة محتوى الملفات في عناوين URL لاتساق الذاكرة ومدد الانتهاء الطويلة، ودور CDN في تسريع تسليم الأصول الثابتة.
- سلسلة Bingbot: تعظيم كفاءة الزحف — منطق جدة الزحف (الزحف أقل عندما لا يتغير المحتوى) الذي يدعمه التخزين المؤقت.
- إرشادات Bing لمشرفي المواقع — المركز الذي توجد فيه إرشادات Bing للأداء وCDN.
اقتباسات من المصدر
تصريحات مسجلة من Google ومن كتاباتي. كل رابط عميق يقفز إلى الفقرة المقتبسة في صفحة المصدر.
Google — ديسمبر الزحف: التخزين المؤقت عبر HTTP
- “While Google’s crawling infrastructure supports heuristic caching mechanisms, in fact always had, the number of requests that can be returned from local caches has decreased: 10 years ago about 0.026% of the total fetches were cacheable, which is already not that impressive; today that number is 0.017%.” (ترجمة) «مع أن بنية زحف Google تدعم آليات التخزين المؤقت الاستدلالي، بل كانت تدعمها دائمًا، انخفض عدد الطلبات التي يمكن إعادتها من الذاكرات المحلية: قبل 10 سنوات كان نحو 0.026% من إجمالي عمليات الجلب قابلًا للتخزين المؤقت، وهو ليس رقمًا مثيرًا أصلًا؛ واليوم يبلغ 0.017%.» الانتقال إلى الاقتباس
- “We strongly recommend using ETag because it’s less prone to errors and mistakes (the value is not structured unlike the Last-Modified value). And, if you have the option, set them both: the internet will thank you. Maybe.” (ترجمة) «نوصي بشدة باستخدام ETag لأنه أقل عرضة للأخطاء والهفوات (فقيمته غير منظمة، بخلاف قيمة Last-Modified). وإذا كان لديك الخيار، فاضبطهما معًا: سيشكرك الإنترنت. ربما.» الانتقال إلى الاقتباس
- “Our recommendation is that you require a cache refresh on significant changes to your content; if you only updated the copyright date at the bottom of your page, that’s probably not significant.” (ترجمة) «نوصي بأن تشترط تحديث التخزين المؤقت عند حدوث تغييرات مهمة في المحتوى؛ وإذا لم تكن قد حدثت إلا سنة حقوق النشر في أسفل الصفحة، فذلك على الأرجح غير مهم.» الانتقال إلى الاقتباس
Google — نظرة عامة على الزاحف (قسم التخزين المؤقت عبر HTTP)
- “If both ETag and Last-Modified response header fields are present in the HTTP response, Google’s crawlers use the ETag value as required by the HTTP standard.” (ترجمة) «إذا وُجد كل من حقلي رأس استجابة ETag وLast-Modified في استجابة HTTP، تستخدم زواحف Google قيمة ETag كما تقتضي مواصفة HTTP.» الانتقال إلى الاقتباس
- “Other HTTP caching directives aren’t supported.” (ترجمة) «توجيهات التخزين المؤقت الأخرى غير مدعومة.» الانتقال إلى الاقتباس
Google — ديسمبر الزحف: شبكات CDN والزحف
- “Historically, CDNs’ biggest focus is caching, meaning that once a user requested a URL from your site, CDNs will store the contents of that URL in their caches for a time so your server doesn’t have to serve that file again for a while.” (ترجمة) «كان التركيز الأكبر لشبكات CDN تاريخيًا هو التخزين المؤقت؛ فبمجرد أن يطلب مستخدم عنوان URL من موقعك، تخزن الشبكات محتوى ذلك العنوان في ذواكرها مدةً ما، حتى لا يضطر خادمك إلى تقديم الملف مجددًا لبعض الوقت.» الانتقال إلى الاقتباس
Patrick Stox — عن التخزين المؤقت وCDNs
- “Your cache time should be as long as you are comfortable with.” — أنا، في دليل Ahrefs عن Largest Contentful Paint. الانتقال إلى الاقتباس
- “One possible cause would be a shared cache between a test environment and a live environment. When the cache from the test environment is active, the robots.txt file may include a blocking directive.” (ترجمة) «من الاحتمالات ذاكرة مشتركة بين بيئة الاختبار والموقع الحي؛ فإذا نشطت ذاكرة الاختبار فقد يضم robots.txt توجيهًا للحجب.» — أنا، عن فشل زحف حقيقي عُزي إلى ذاكرة مشتركة. الانتقال إلى الاقتباس
- “One of my personal favorites that I don’t think it’s used enough, it’s actually just off loading your redirects to the CDN level.” (ترجمة) «إحدى المفضلات الشخصية لدي التي لا أظن أنها تُستخدم بما يكفي: تفريغ عمليات إعادة التوجيه إلى مستوى CDN.» — أنا، في بودكاست Marketing Speak. الانتقال إلى الاقتباس
التخزين المؤقت لـSEO — ورقة غش
توجيهات Cache-Control، مفككة المعنى
| التوجيه | معناه الفعلي | استخدمه لـ |
|---|---|---|
max-age=31536000 | جديد لنحو سنة | الأصول الثابتة غير القابلة للتغيير ذات الإصدارات/التجزئات |
no-cache | خزنه، لكن أعد التحقق قبل إعادة الاستخدام (ولا يزال يستخدم 304) | HTML تريد أن يبقى جديدًا ومؤهلًا لـbfcache |
no-store | لا تخزن أي نسخة في ذاكرة HTTP (ليس مفتاح خصوصية عام) | الاستجابات الحساسة/الخاصة فعلًا فقط |
public | يجوز للذاكرات المشتركة (CDNs) تخزينه | الأصول القابلة للتخزين في CDN |
private | لا يجوز التخزين إلا لمتصفح المستخدم النهائي | استجابات لكل مستخدم |
immutable | تخطَّ إعادة التحقق ما دمت جديدًا (لا يعني «لا يشيخ أبدًا») | الأصول ذات البصمة |
must-revalidate | بعد الشيخوخة، أعد التحقق قبل إعادة الاستخدام — لا تقدم القديم عند الخطأ | محتوى تكون الاستجابة القديمة الخطأ فيه أسوأ من الأبطأ |
s-maxage | الجدة لذاكرات CDN المشتركة تحديدًا | أعمار منفصلة لـCDN والمتصفح |
stale-while-revalidate / stale-if-error | إعادة استخدام قديم محدودة أثناء إعادة الجلب/عند خطأ الأصل (الدعم يختلف) | صفحات ذات حركة عالية، والمرونة أثناء أخطاء الأصل |
ما يحترمه Googlebot فعلًا
- ✅
ETag+If-None-Match(أداة التحقق التي تفضلها Google) - ✅
Last-Modified+If-Modified-Since(نسّق التاريخ وفق HTTP:Fri, 4 Sep 1998 19:15:56 GMT) - ✅
max-age— لكن كتلميح لتوقيت إعادة الزحف لا قاعدة - ❌ كل ما عدا ذلك — «توجيهات التخزين المؤقت الأخرى عبر HTTP غير مدعومة»
حقائق سريعة
- تفضل Google ETag؛ وإذا ضُبط الاثنان تفوز ETag. اضبط الاثنين على أي حال (تستخدمهما CMSs).
- أداة تحقق مطابقة →
304 Not Modified، بلا جسم → توفر الحوسبة والنطاق الترددي. - Chrome/Lighthouse: خزّن الأصول غير القابلة للتغيير مؤقتًا سنة أو أكثر.
- تحصل CDNs على سماح معدل زحف أعلى — لكن بعد أن تصبح الذاكرة دافئة.
- حجب مؤقت؟ أعد 503/429، لا 200 صامتًا مع خطأ ولا صفحة وسيطة لروبوت.
- يمكن لـ
no-storeفي وثيقة HTML أن يحرم الصفحة من bfcache → استخدمno-cache/max-age=0. - أُوقفت «ذاكرة Google» (عامل
cache:) في 2024 — ولا علاقة لذلك بالتخزين المؤقت عبر HTTP.
خرافات التخزين المؤقت وأخطاؤه
كل واحدة منها: لماذا هي خاطئة، وما الذي تفعله بدلًا منها.
الخرافة: «سيؤدي تخزين صفحتي مؤقتًا إلى رفع ترتيبي». لماذا هي خاطئة: لا توجد إشارة ترتيب لإعداد التخزين المؤقت. وقد أوضح فريق Search Relations لدى Google أن التخزين المؤقت ليس عامل ترتيب. افعل بدلًا من ذلك: اضبط التخزين المؤقت للمكاسب الحقيقية — سرعة الصفحة/Core Web Vitals وكفاءة الزحف — فكلاهما يلامس الظهور بصورة غير مباشرة. لا تتوقع زيادة مباشرة.
الخرافة: «ذاكرة Google وHTTP caching الشيء نفسه».
لماذا هي خاطئة: كانت أداة البحث cache: وميزة عرض الصفحة المخزنة مؤقتًا لقطةً للمستخدم، وقد أُوقفت بالكامل في 2024. أما التخزين المؤقت عبر HTTP (Cache-Control/ETag) فبنية تحتية لا علاقة لها بذلك.
افعل بدلًا من ذلك: تجاهل «النسخة المؤقتة» المفقودة — فهي لا تقول شيئًا عن إعداد التخزين المؤقت لديك. احكم على التخزين عبر الترويسات وسلوك الزحف/الأداء.
الخرافة: «no-cache تعني لا تخزن».
لماذا هي خاطئة: تعني no-cache «خزنها، لكن أعد التحقق مع الخادم قبل استخدامها». ولا تزال تتيح تدفق إعادة التحقق 304. أما no-store فهو التوجيه الذي يمنع التخزين فعلًا.
افعل بدلًا من ذلك: استخدم no-cache عندما تريد الجدة مع إعادة التحقق؛ واحجز no-store للاستجابات الحساسة فعلًا التي يجب ألا تُخزن أبدًا.
الخرافة: «المدة الطويلة للتخزين المؤقت تجعل Google ترى المحتوى قديمًا إلى الأبد».
لماذا هي خاطئة: يتحقق زاحف Google عبر ETag/Last-Modified عند إعادة الزحف بصرف النظر عن max-age لديك؛ فـmax-age تلميح لإعادة الزحف لا قفل يمنع Google من إعادة الجلب.
افعل بدلًا من ذلك: خزّن طويلًا، لكن أطلق أداة إبطال حقيقية (ETag/Last-Modified أو URL جديد) عند تغييرات المحتوى المهمة — وهذا توصية Google نفسها.
الخرافة: «يصلح CDN مشكلات ميزانية الزحف تلقائيًا». لماذا هي خاطئة: لا يساعد CDN إلا بعد تدفئة ذاكرته؛ فالأصل لا يزال يخدم كل URL مرة واحدة على الأقل (مشكلة الذاكرة الباردة)، كما قد يحجب CDN خاطئ الإعداد الزواحف ويزيد الوضع سوءًا. افعل بدلًا من ذلك: خطط لحمل الأصل في الإطلاقات/الترحيلات الكبيرة، وتحقق من أن CDN لا يحجب الروبوتات (أداة فحص URL، وأعد 503/429 للحجب المؤقت).
الخرافة: «أي توجيه Cache-Control أضبطه يغير طريقة زحف Googlebot».
لماذا هي خاطئة: وفق وثائق Google، لا تدعم الزواحف — بعد ETag/Last-Modified (وتلميح max-age الاختياري) — «توجيهات التخزين المؤقت الأخرى عبر HTTP».
افعل بدلًا من ذلك: استخدم stale-while-revalidate وs-maxage وno-cache وغيرها لضبط سلوك المتصفح وCDN — لكن اعتمد على ETag/Last-Modified للتأثير في تخزين Googlebot المؤقت.
إعدادات التخزين المؤقت، قبل وبعد
1. أصل ثابت بلا سياسة تخزين مؤقت → اختفاء تحذير PageSpeed
- قبل: يُخدم
style.cssبلاCache-Control؛ ويبلغ Lighthouse عن «قدّم الأصول الثابتة بسياسة تخزين مؤقت فعالة»، فتُعاد زيارة التنزيل. - بعد: أعد تسمية الملف إلى
style.a1b2c3.cssوخدمه بـCache-Control: public, max-age=31536000, immutable. تتخطى الزيارات المتكررة التنزيل؛ ويعني تغير المحتوى اسمًا جديدًا يلغي النسخة فورًا.
2. وثيقة HTML أردتها «جديدة» → فقدان bfcache
- قبل:
Cache-Control: no-storeفي HTML لفرض الجدة. الأثر الجانبي: تُحرم الصفحة من bfcache، فتقيس تنقلات «رجوع» LCP/CLS/INP من جديد وتسحب بيانات CrUX الحقلية. - بعد: انتقل إلى
no-cache(أوmax-age=0) — ستظل تعيد التحقق من الجدة، لكن الصفحة تبقى مؤهلة لـbfcache وتُستعاد التنقلات المتكررة فورًا.
3. ذاكرة مشتركة بين التجهيز والإنتاج → حجب متقطع لـGooglebot
- قبل: تشترك بيئتا الاختبار والإنتاج في ذاكرة CDN. وعندما تكون نسخة الاختبار نشطة، يحمل
robots.txtالمخزن توجيه حجب، فيرى Googlebot منعًا لا ينبغي أن يراه على فترات. - بعد: افصل الذاكرة بين البيئتين — أو استبعد ملفات
.txtمن ذاكرة بيئة الاختبار — كي لا يُخدمrobots.txtالحي من ذاكرة التجهيز. (هذه حالة حقيقية كتبت عنها في مفهرسة رغم حجبها بواسطة robots.txt.)
4. إطلاق كبير خلف CDN → طفرة زحف غير متوقعة
- قبل: انشر 50 000 URL جديد دفعة واحدة مفترضًا أن CDN سيمتص الحمل. كل URL فقد بارد، ولذلك يخدم الأصل كل واحد مرة واحدة على الأقل ويبقى معدل الزحف مرتفعًا أيامًا.
- بعد: دفّئ الذاكرة قبل الإطلاق (أو نفّذ الإطلاق على مراحل)، وتوقع — ووفر — أن يتحمل الأصل الحمل الكامل لكل URL قبل أن يبدأ CDN بحجبه.
قائمة فحص إعداد التخزين المؤقت عبر HTTP
- تحمل الأصول الثابتة (الصور وCSS وJS والخطوط)
max-ageطويلًا (سنة أو أكثر للملفات ذات الإصدارات/غير القابلة للتغيير). - تستخدم أسماء ملفات ذات إصدارات/تجزئات كي تخزن بكثافة وتلغي النسخة فورًا.
- ضُبطت
ETag(أداة التحقق المفضلة لدى Google) وضُبطLast-Modifiedأيضًا، مع تاريخ HTTP منسق صحيحًا. - يعيد خادمك
304 Not Modified(بلا جسم) عندما تظل أداة التحقق مطابقة. - تستخدم وثائق HTML التي تحتاج إلى الجدة
no-cache/max-age=0، لاno-store(للحفاظ على أهلية bfcache). - يطلق تغيير المحتوى المهم أداة إبطال حقيقية (ETag/Last-Modified/URL جديد)، لا مجرد تغيير تاريخ التذييل.
- يوجد CDN أمام الأصل، مع ضبط
public/s-maxageكي تخزن الذاكرات المشتركة ما ينبغي مشاركته. - تُفرغ الذاكرة عند النشر كي لا تحصل الروبوتات على محتوى قديم.
- لا تشترك بيئتا التجهيز والإنتاج في ذاكرة
robots.txtأو ملفات التحكم الأخرى. - يعيد الحجب المؤقت
503/429، لا صفحة 200 صامتة مع خطأ ولا صفحة وسيطة لروبوت. - تعرض أداة فحص URL في Search Console صفحتك الحقيقية (لا تحديًا ولا صفحة فارغة) — لتؤكد أن CDN/WAF لا يحجب Googlebot.
تظل الملفات المحدثة قديمة بعد النشر
العَرَض: يستمر الزوار في تلقي ملف CSS أو JavaScript أو صورة قديم. السبب المرجح: تستخدم ذاكرة طويلة العمر URL نفسه لبايتات تغيرت. الإصلاح: انشر أصولًا غير قابلة للتغيير بأسماء ملفات ذات تجزئة محتوى وحدّث مرجع HTML؛ وأفرغ كائن الحافة القديم فقط عند إعادة استخدام URL نفسه. أكد تحميل URL الجديد.
يعيد Googlebot تنزيل صفحات لم تتغير
العَرَض: تظهر في السجلات استجابات 200 كاملة متكررة لـHTML لم يتغير. السبب المرجح: غياب ETag/Last-Modified أو عدم استقرارهما. الإصلاح: أصدر أداة تحقق مستقرة صحيحة المحتوى واختبر طلبًا شرطيًا. تعيد إعادة التحقق العاملة 304 عندما لا يتغير التمثيل.
يتلقى مستخدمون مختلفون النسخة المؤقتة الخطأ
العَرَض: يتسرب المحتوى الخاص باللغة أو الجهاز أو تسجيل الدخول أو التخصيص بين المستخدمين. السبب المرجح: لا يتضمن مفتاح الذاكرة المشتركة البعد الذي يغير الاستجابة، أو وُسم المحتوى الخاص بأنه عام. الإصلاح: صحح مفتاح الذاكرة وسلوك Vary، ووسم الاستجابات الخاصة بما يناسب، وأفرغ الكائنات الملوثة، ثم أعد اختبار نسخ متعددة.
لا تسجل ذاكرة CDN إصابة أبدًا
العَرَض: تستمر الطلبات المؤهلة المتكررة في الوصول إلى الأصل. السبب المرجح: no-store/private، أو ملفات ارتباط، أو مفتاح ذاكرة مجزأ بدرجة مفرطة، أو قاعدة تجاوز عند الحافة. الإصلاح: افحص ترويسات الاستجابة وحالة الذاكرة في CDN، وغيّر فقط القواعد الآمنة لفئة المحتوى تلك، ثم اطلب مفتاح الذاكرة نفسه مرتين لتؤكد تسجيل إصابة.
خزّن بحسب تمثيل الاستجابة، لا بحسب امتداد الملف وحده
صنف كل استجابة قبل إسناد السياسة:
- أصل عام غير قابل للتغيير: يمكن لـCSS وJS والخطوط والصور ذات تجزئة المحتوى استخدام عمر طويل لأن البايتات المتغيرة تحصل على URL جديد.
- وثيقة عامة متغيرة: يمكن تخزين HTML مدة قصيرة أو إعادة التحقق منه عبر
ETag/Last-Modified؛ فالجدة والتصحيح السريع أهم من أقصى TTL. - استجابة خاصة بالمستخدم: التخزين المشترك غير آمن ما لم تُزل التخصيصات من التمثيل أو تُفصل في مفتاح الذاكرة على نحو صحيح.
- استجابة حساسة: استخدم السياسة الصارمة التي تتطلبها البيانات، واقبل مقايضة الأداء بدل كشف المحتوى.
السؤال المفيد ليس «إلى متى أستطيع تخزين هذا النوع؟» بل «ما الخطأ الذي سيحدث إذا أُعيد استخدام هذا التمثيل بالذات لهذا الطالب بعد هذا التغيير؟»
الجدة والصحة والكفاءة
يجب أن تجتاز سياسة التخزين المؤقت ثلاثة اختبارات: الجدة (تظهر التغييرات في الموعد الموعود)، والصحة (يحصل الطالب الصحيح على النسخة الصحيحة)، والكفاءة (لا يعاد توليد البايتات غير المتغيرة أو نقلها بلا حاجة). ولا يعد معدل إصابة مرتفع نجاحًا إذا قدم الاستجابة الخطأ.
أدوات فحص التخزين المؤقت عبر HTTP
- لوحة Network في أدوات مطور المتصفح — افحص
Cache-ControlوETagوLast-ModifiedوAgeوVary، وهل جاءت الاستجابة من الذاكرة أو القرص أو الشبكة. curl— أرسل طلباتHEADوطلبات شرطية من دون غموض ذاكرة المتصفح؛ وقارن أداة التحقق الأولية بـIf-None-MatchأوIf-Modified-Since.- PageSpeed Insights / Lighthouse — اعثر على الأصول الثابتة ذات سياسات التخزين غير الفعالة؛ ويربط المقال إرشادات Lighthouse الرسمية لسياسة الذاكرة.
- تحليلات وسجلات CDN — افحص حالة الإصابة/الفقد/التجاوز، ومفاتيح الذاكرة، وطلبات الأصل، وعمليات الإفراغ عند الطبقة التي تخدم الاستجابة العامة فعلًا.
- سجلات الخادم — تحقق من أن Googlebot يتلقى إعادة تحقق
304بدل أجسام كاملة للصفحات التي لم تتغير.
أثبت أن تغيير التخزين المؤقت يعمل
اختبار الطلب الشرطي
الاختبار: اجلب الاستجابة، وانسخ ETag، ثم اطلبها مع If-None-Match. النتيجة المتوقعة: يعيد التمثيل غير المتغير 304 بلا جسم استجابة. تفسير الفشل: أداة التحقق مفقودة أو غير مستقرة أو متجاهلة. نافذة المراقبة: فورية. محفز التراجع: يجيب المحتوى المتغير بـ304 على نحو خاطئ أو تتصادم أداة التحقق بين النسخ.
اختبار الأصل ذي الإصدار
الاختبار: انشر البايتات المتغيرة تحت URL جديد ذي تجزئة محتوى وأعد تحميل صفحة تشير إليه. النتيجة المتوقعة: يعيد URL الجديد الأصل الجديد، بينما يمكن أن يبقى URL القديم مخزنًا. تفسير الفشل: لا يزال HTML يشير إلى الأصل القديم أو لم يغير البناء التجزئة. نافذة المراقبة: فور انتشار HTML/CDN. محفز التراجع: تنسيق مكسور أو أخطاء نص برمجي في الأصل الجديد.
اختبار نسخة الذاكرة المشتركة
الاختبار: اطلب كل نسخة ذات معنى عبر CDN، وكرر كل طلب، وقارن الجسم ومفتاح/حالة الذاكرة وVary. النتيجة المتوقعة: يحصل كل طالب على التمثيل الصحيح ولا يعاد استخدام إلا النسخ الآمنة. تفسير الفشل: ينقص مفتاح الذاكرة بعدًا أو يُشارك محتوى خاص. نافذة المراقبة: فورية مع مراجعة سجل الإنتاج. محفز التراجع: يتلقى مستخدم نسخة شخصية أو لغوية تخص مستخدمًا آخر.
اختبر نفسك: التخزين المؤقت لـSEO
خمسة أسئلة سريعة عن التخزين المؤقت عبر HTTP وCDNs والزحف. اختر إجابة لكل سؤال ثم تحقق منها.
سجل التغييرات
تم التحديث في 22 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 22 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 8 أغسطس 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.
تم التحديث في 17 يوليو 2026.
ملخص تحريري وتفاصيل التغيير المسجلة.تفاصيل التغيير
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
-
تفاصيل التغيير متاحة حاليًا باللغة الإنجليزية.
المقارنة الكاملة غير متاحة — لم تُؤرشف لقطة سابقة لهذه المراجعة.