STATUS IS UPويكي تحسين المواقع
20تسريع
الأداء والتسليم / تسريع

دليل تخزين المتصفح المؤقت لمالكي المواقع

حدد قواعد HTTP واضحة حتى تتجنب تنزيلات غير ضرورية عند الزيارات المتكررة دون حبس الزوار على صفحات قديمة أو محتوى مخصص غير آمن.

دليل تخزين المتصفح المؤقت لمالكي المواقع — دليل بصري
اقرأ
7 دقائق
المصادر
6
أعد التحقق
2027-03-27
مُراجع
مراجع أداء الويب وهندسة الإصدارات
الإجابة المختصرة

ابدأ بالقرار.

استخدم قاعدة تخزين مختلفة لكل فئة من عناوين URL. امنح الملفات التي لا يتغير محتواها عند نفس العنوان، مثل JavaScript وCSS والخطوط والصور ذات أسماء موقّعة بالهاش، عمر صلاحية طويلًا. اعطِ HTML والردود غير الموقّعة سياسة تجعل المتصفح يتحقق قبل إعادة الاستخدام عندما تكون الصلاحية مهمة. انشر عنوان أصل جديد كلما تغيّر أصلًا؛ لا يمكن التراجع الموثوق عن عمر صلاحية طويل لنسخ لا تزال ضمن فترة الصلاحية.

ابدأ بترويسات Cache-Control صريحة، ثم تحقق من الترويسات وسلوك المتصفح في بيئة تحضيرية. زوج الردود التي تشجّع التحقق مع ETag ومع Last-Modified عندما يتاح ذلك. تعامل مع الردود المخصصة والحساسة مثل الحساب والدفع بشكل منفصل عن الصفحات العامة. تستخدم SIU هذا العمل كتحسين استباقي للجهوزية: فهو يقلل العمل غير الضروري على الأصل ويمنع أعطال النشر المتعلقة بالذاكرة المؤقتة قبل أن تؤثر على موقع قابل للاستخدام.

دليل بصري

انظر إلى العمل كنظام.

استخدم هذه الخريطة لربط قرارات المقال قبل تنفيذ التكتيكات الفردية.

SIUتسريع
01طبّق السياسة حسب المورد، لا حسب الخادم
02استخدم مصطلحات Cache-Control بدقّة
03وسّم الأصول غير القابلة للتغيير قبل إعطائها عمرًا طويلًا
04اجعل HTML حديثًا عن طريق التحقق، لا عن طريق التخزين الطويل
01

طبّق السياسة حسب المورد، لا حسب الخادم

أحصِ عيّنات ممثلة من عناوين URL قبل تغيير الترويسات: صفحة رئيسية، صفحة محتوى، شِل التطبيق، CSS، JavaScript، صور، خطوط، واجهات برمجة التطبيقات (APIs)، تسجيل الدخول، الحساب، الدفع، والتنزيلات. لكل منها، سجّل ما إذا كانت الاستجابة عامة أم مخصصة، وما إذا كان عنوانها يتغير عندما تتغير بايتاتها، ومدى سرعة وصول تصحيح إلى الزوار.

صُنّف سياسة على شكل مصفوفة بناءً على هذه الجرد. يحتاج الأصل العام المعتمد على المحتوى (content-addressed) إلى قاعدة مختلفة عن HTML في عنوان ثابت. يمكن للردود دون `Cache-Control` أن تُخزّن أيضًا بطريقة تخمينية، لذلك القواعد الصريحة أسهل للاختبار.

مدة الصلاحية (Freshness lifetime)

الفترة التي يمكن خلالها إعادة استخدام استجابة مخزنة؛ يحدد `max-age` هذه الفترة بالثواني.

02

استخدم مصطلحات Cache-Control بدقّة

`Cache-Control` يخبر المتصفحات والذاكرات المشتركة كيف تخزن وتعيد استخدام الاستجابة. `max-age=N` يسمح بإعادة الاستخدام طالما النتيجة طازجة. `s-maxage=N` يضبط صلاحية الذاكرة المشتركة ويتجاوز `max-age` هناك، لكن المتصفحات تتجاهل `s-maxage`. `public` يسمح لأي ذاكرة مؤقتة بالتخزين؛ `private` يسمح بتخزين المتصفح ولكنه يمنع التخزين في الذاكرات المشتركة.

`no-cache` يسمح بالتخزين لكنه يتطلّب التحقق من الأصل قبل إعادة الاستخدام. `no-store` يعني أنه لا يجوز للذاكرات تخزين الاستجابة، لكنه ليس ضابط خصوصية كاملًا. استخدم `must-revalidate` عندما يكون تقديم محتوى منتهي الصلاحية غير مقبول؛ عندها قد يؤدي عدم توفر الأصل إلى إرجاع 504 بدلًا من تقديم نسخة منتهية.

تجنّب `no-store` الشامل

هو يزيل التخزين بدلًا من مجرد طلب تحقق؛ احتفظ به للردود التي يجب حقًا ألا تُخزّن.

03

وسّم الأصول غير القابلة للتغيير قبل إعطائها عمرًا طويلًا

يتضمن عنوان الأصل المُوسَّم بصمة محتوى أو إصدار الإصدار، مثل `app.4f2c.js`. عندما تتغير بايتات الأصل، انشر عنوان URL مختلفًا وحدث إشارة HTML. ترى الذاكرة المؤقتة موردًا جديدًا، لذا يجلب الزائرون الأصل الجديد دون أن تصل عملية إبطال إلى كل متصفح.

لتمثيل لن يتغير خلال فترة صلاحيته، نمط عملي هو `Cache-Control: max-age=31536000, immutable`. تشير `immutable` إلى أن العملاء الداعمين لا يحتاجون لإعادة التحقق شرطيًا أثناء الصلاحية. لا تطبّقها أو `max-age` لسنة على ملف قابل للتعديل بنفس العنوان. احتفظ بالأصول الموقّعة السابقة بينما قد تواصل HTML المخزنة مؤقتًا الإشارة إليها.

HTML هو السجل (manifest)

يختار HTML عناوين الأصول، لذا يجب أن يحتفظ تسلسل الإصدارات بالجيل المشار إليه.

04

اجعل HTML حديثًا عن طريق التحقق، لا عن طريق التخزين الطويل

عادةً ما يكون لـ HTML عنوان قابل للعرض من قِبَل البشر ويتغيّر مع المحتوى ومراجع الأصول وعلامات الميزات أو الإشعارات الأمنية. نمط محافظ لصفحات HTML العامة هو `Cache-Control: no-cache` مع `ETag` و`Last-Modified` عندما تستطيع منصتك إنتاجهما بشكل صحيح. يخزن المتصفح الجسم لكنه يستخدم طلبًا شرطيًا قبل إعادة الاستخدام؛ يمكن أن تعود استجابة دون تغيير بـ `304 Not Modified` دون جسم.

`ETag` يحدّد نسخة المورد. على استجابة منتهية الصلاحية، يمكن للمتصفح إرسالها في `If-None-Match`; إذا طابقت، يرد الخادم بـ `304`، وإلا يرسل التمثيل الجديد. توصي الإرشادات في المواصفات بتوفير كلٍ من `ETag` و`Last-Modified` على استجابة 200 عندما يكون ذلك ممكنًا. لا يضمن `no-cache` تحققًا عند التنقّل للخلف أو للأمام لأن المتصفح قد يستعيد لقطة من سجل الجلسة.

جودة المُحدِّد (Validator quality)

يجب أن يتغير `ETag` عندما يتغير التمثيل؛ اختبره عبر الأصول والنشر.

05

فصّل التسليم العام عن الردود المخصصة والحساسة

قد تعيد ذاكرة مشتركة مثل CDN استخدام استجابة واحدة لعدة مستخدمين. لا تسمح لها بإعادة استخدام HTML أو بيانات API الخاصة بالحساب عبر المستخدمين. للبيانات المخصصة التي قد تبقى في المتصفح، يكون `private, no-cache` نقطة بداية معقولة: يمنع التخزين المشترك ويتطلب التحقق. وجود `Set-Cookie` وحده لا يمنع التخزين.

لردود لا ينبغي تخزينها، استخدم `no-store` وراجع كود التطبيق، وقواعد CDN، وعاملات الخدمة (service workers)، وتخزين المتصفح، والسجلات، وصفحات الأخطاء. الترويسات وحدها ليست برنامجًا للخصوصية أو الامتثال أو أمان المدفوعات. اجعل مراجعي الأمان والخصوصية والمدفوعات المؤهلين يقيمون التدفقات الحساسة والمتطلبات المطبقة.

تغيّرات التفويض (Authorization changes)

اختبر التسجيل، وتسجيل الخروج، وتبديل الحساب، وتغيّر الأذونات مع ذاكرات متصفح وCDN دافئة.

06

نَشِّر تغييرات التخزين كإصدار قابل للرجوع

التقط ترويسات خط الأساس وسلوك الجسم للطلبات غير المخزنة والمتكررة. في بيئة تحضيرية، انشر الأصول الموقّعة أولًا، ثم HTML الذي يشير إليها، واختبر HTML المخزّن القديم مقابل الأصل الجديد. افحص مسارات الأصل المباشر وCDN إن وُجدتا. يجب أن تظهر ترويسات أدوات المطور (DevTools Network) السياسة المقصودة وسلوك التكرار.

احتفظ بمخطط إصدار (release manifest) لعناوين الأصول، وقواعد الترويسات، وإصدار التكوين. إذا جمع إصدار أحجام ملفات غير متوافقة للعملاء، استعد HTML المتوافق أولًا؛ لكن لا تُعدِّل ملفًا موقّعًا ثابتًا منشورًا. أعد توجيه HTML إلى الجيل المعروف بأنه يعمل واحتفظ بكلا الجيلين طالما قد تطلب HTML المخزّن الأصول الأقدم. لا يمكن لعملية تطهير الذاكرة المشتركة أن تُجبر المتصفحات على التخلص من استجابة لا تزال طازجة.

المعالجة الاستباقية

حوّل فشل اختبارات الترويسات، و404 للأصول، وعدم تطابق الإصدارات إلى عناصر في قائمة فحص الإصدار التالية.

نفّذ / تحقق

دليل المهام العملي الخاص بك.

  1. 01

    أحصِ فئات الاستجابة

    صنّف عيّنات عناوين URL على أنها عامة أم مخصصة، قابلة للتعديل أم مُوقّعة بالإصدار.

    تحقق: تشمل HTML، الأصول، APIs، المصادقة، الحساب، الدفع، والأخطاء.
  2. 02

    التقط الترويسات الحالية

    سجّل `Cache-Control`, `ETag`, `Last-Modified`, `Age`, `Vary`, والحالة عند الأصل وCDN.

    تحقق: يوجد لقطات قبل التغيير لكل عينة.
  3. 03

    وسّم الأصول القابلة للتغيير

    اجعل عملية البناء تنشر عنوان أصل جديد عندما تتغير بايتاته.

    تحقق: تنتج الأصول المتغيرة عنوان URL مختلفًا وإشارة HTML محدثة.
  4. 04

    اضبط سياسات صريحة

    استخدم قواعد طويلة العمر فقط لعناوين URL المُوقّعة غير القابلة للتغيير؛ واستخدم قواعد تفضّل التحقق للعناوين الثابتة.

    تحقق: اختبارات الترويسات تطابق السياسة المقصودة.
  5. 05

    اختبر التحقق

    تحقق من أن المستند غير المتغير يعيد `304` بعد طلب شرطي وأن المتغير يعيد `200` مع `ETag` جديد.

    تحقق: تُظهر آثار البيئات التحضيرية كلا المسارين.
  6. 06

    اختبر حدود الخصوصية

    اختبر حسابين، وتسجيل الخروج، وتغيّر الأدوار، والمسارات الحساسة مع ذاكرات مؤقتة دافئة.

    تحقق: لا تعبر استجابة مخصصة بين المستخدمين.
  7. 07

    أثبِت توافق الإصدار

    حمّل HTML المخزّن السابق بعد الإصدار التالي.

    تحقق: تحمّل HTML السابق والحالي الأصول المشار إليها دون 404 أو أخطاء سكربت.
  8. 08

    وثّق استرجاع الإصدار

    سجّل الجيل الجيد، وإصدار الترويسات، والمالك، وفترة احتفاظ الأصول القديمة.

    تحقق: تُعيد تجربة غير إنتاجية الجيل المعروف بأنه يعمل دون تعديل عنوان URL غير قابل للتغيير.
مواضيع النقاش

قارن المقايضات، لا تشارك بيانات خاصة.

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

  1. 01

    أَي فئات عناوين URL في موقعك أصعب تصنيفها على أنها عامة أو مخصصة أو غير قابلة للتغيير أو متغيرة بسرعة، وكيف توثّق القرار؟

  2. 02

    ما اختبار تسلسل الإصدار الذي كان أكثر فائدة في اكتشاف عدم تطابق بين HTML القديم والأصل الجديد قبل أن يواجهه الزائر؟

  3. 03

    أين تتداخل قواعد CDN والتطبيق وذاكرة المتصفح، ومن المسؤول عن التحقق أن سلوكها المجمع يطابق السياسة المقصودة؟

الموارد الشائعة / الموثوقة

اطّلع على المواد المصدرية.

IETFRFC 9111: HTTP Caching ↗

يشرح الصلاحية، والتحقق، وتوجيهات الذاكرة المؤقتة، وطرق الإبطال، وحدود المعلومات الحساسة.

تمت المراجعة 2026-09-27
IETFRFC 8246: HTTP Immutable Responses ↗

يعرف التخزين المؤقت غير القابل للتغيير (`immutable`)، نطاقه، ومخاطر التلف.

تمت المراجعة 2026-09-27
MDN Web DocsHTTP caching ↗

إرشادات عملية حول المجلدات المُحدِّدة (`validators`)، و`304`s، والتخصيص، وكسر التخزين المؤقت (cache-busting).

تمت المراجعة 2026-09-27
MDN Web DocsCache-Control header ↗

مرجع لـ `max-age`, `s-maxage`, `no-cache`, `no-store`, `private`, `public`, و`must-revalidate`.

تمت المراجعة 2026-09-27
MDN Web DocsETag header ↗

يشرح وسوم الكيان (`ETag`)، و`If-None-Match`، والتحقق بـ `304`.

تمت المراجعة 2026-09-27
web.devPrevent unnecessary network requests with the HTTP Cache ↗

إرشادات عملية حول عناوين URL ذات الإصدارات، والموّلدات، والسياسات، والنشر.

تمت المراجعة 2026-09-27

سياسة المصادر. تستخدم هذه المقالة معايير قرائية ووثائق فنية من المصدر الأول. وتتجنب ادعاءات أداء غير مدعومة وتفصل قواعد HTTP عن تكوينات المنصات الخاصة.

توضيحات سريعة

أسئلة شائعة.

هل يعني `no-cache` أن المتصفح لا يمكنه تخزين الصفحة؟

لا. يسمح `no-cache` بالتخزين لكنه يتطلب تحققًا ناجحًا مع الأصل قبل إعادة الاستخدام. استخدم `no-store` فقط عندما يجب ألا تُخزن الاستجابة، مع إدراك أن `no-store` وحده ليس ضمانًا للخصوصية بالكامل.

هل يجب أن يحصل كل ملف ثابت على عمر تخزين سنة واحدة؟

لا. `max-age` بسنة مناسبة فقط عندما لا يتغير محتوى URL خلال تلك الفترة، عادة لأن العنوان موقّع أو مُوسَّم بالإصدار. تحتاج الملفات القابلة للتعديل بنفس العنوان إلى سياسة أقصر أو سياسة تفضّل التحقق.

هل يمكن لعملية تطهير CDN إصلاح خطأ في تخزين متصفح المستخدم؟

يمكنها إزالة نسخة من الذاكرة المشتركة المدارَة، لكنها لا تستطيع إجبار كل المتصفحات على التخلص من استجابة لا تزال طازجة. انشر عنوان أصل مُوسَّم جديد وحدث إشارات HTML؛ ثم استخدم خطة الاسترجاع لإعادة توجيه HTML إلى الجيل المتوافق إذا لزم الأمر.

Status Is UP Editorial Team · محرّرو تهيئة الجهوزية (Uptime Enablement Editors)

راجعه مراجع أداء الويب وهندسة الإصدارات. نُشر في 2026-09-27؛ وحُدِّث في 2026-09-30.