يتم تشغيل هذه القاعدة عندما تكتشف PageSpeed Insights أن استجابة الخادم لا تحتوي على رأس ذاكرة تخزين مؤقت صريح أو أن بعض الموارد محددة للتخزين المؤقت لفترة قصيرة فقط.
إذا قام المستخدمون بزيارة موقع الويب الخاص بك عدة مرات، فإن التخزين المؤقت للمتصفح للموارد الثابتة يمكن أن يوفر للمستخدمين الوقت. يجب تطبيق رؤوس ذاكرة التخزين المؤقت على جميع الموارد الثابتة القابلة للتخزين المؤقت، وليس فقط على عدد صغير من الموارد الثابتة ( على سبيل المثال، الصور). تتضمن الموارد القابلة للتخزين المؤقت ملفات JS و CSS وملفات الصور وملفات الكائنات الثنائية الأخرى ( ملفات الوسائط وملفات PDF، إلخ). بشكل عام، HTML ليس موردًا ثابتًا ولا ينبغي اعتباره موردًا قابلاً للتخزين المؤقت افتراضيًا. يجب أن تفكر في سياسات التخزين المؤقت التي تنطبق على HTML لموقع الويب الخاص بك.
تمكين التخزين المؤقت للمتصفح للخادم الخاص بك. يجب أن يكون للموارد الثابتة أسبوع واحد على الأقل من صلاحية ذاكرة التخزين المؤقت. يجب أن يكون لموارد الطرف الثالث مثل الإعلانات أو الأدوات المصغّرة تاريخ صلاحية ذاكرة التخزين المؤقت ليوم واحد على الأقل. بالنسبة لجميع الموارد القابلة للتخزين المؤقت، نوصي بإجراء الإعدادات التالية :
Expires
اضبط على التواريخ المستقبلية، على الأقل أسبوع واحد، وحتى سنة واحدة ( نميل إلى الضبطExpires
بدون تعيينCache-Control : max-age
لأن الأول مدعوم على نطاق أوسع).لا تضعه على تاريخ مستقبلي لأكثر من عام، لأن هذا ينتهك إرشادات RFC.这些标头用于指定相应时间段,浏览器可在指定的这段时间内使用已缓存的资源,而无需查看网络服务器是否提供了新版资源。这些缓存标头功能强大,没有任何应用条件限制。在设置这些标头并下载资源后,浏览器不会为资源发出任何GET请求,除非过期日期到期或达到时间最大值,亦或是用户清除了缓存。
يمكن استخدام هذه الرؤوس لتحديد كيف يجب على المستعرض تحديد ما إذا كانت الملفات المستخدمة للتخزين المؤقت هي نفسها. فيLast-Modified
التاريخ المحدد في الرأس، وETag
يمكن أن تكون القيمة المحددة في الرأس أي قيمة تحدد المورد بشكل فريد ( عادةً إصدار ملف أو قيمة تجزئة المحتوى).Last-Modified
إنه رأس ذاكرة تخزين مؤقت " أضعف " لأن المتصفحات تستخدم الاستدلال لتحديد ما إذا كنت بحاجة إلى الزحف إلى المحتوى من ذاكرة التخزين المؤقت.
باستخدام هذه الرؤوس، يمكن للمتصفحات تحديث مواردها المخزنة مؤقتًا بشكل فعال عن طريق إصدار طلبات GET مشروطة عندما يقوم المستخدمون بإعادة تحميل الصفحة بشكل صريح. ما لم تقم بتغيير الموارد على جانب الخادم، فإن طلبات GET الشرطية لا تُرجع استجابة كاملة، لذلك يكون لهذه الطلبات تأخير أقل من طلبات GET الكاملة.
Expires
أوالحد الأقصى لعمر Cache-Control
و واحدLast-Modified
أوETag
إنه أمر بالغ الأهمية. لا تحتاج إلى تحديد في نفس الوقتExpires
وCache-Control : max-age
- أو كليهماLast-Modified
وETag
.
بالنسبة للموارد التي تتغير من حين لآخر، يمكننا السماح للمتصفح بتخزين المورد المقابل مؤقتًا حتى يتغير المورد على الخادم، ويقوم الخادم بإخطار المستعرض في هذا الوقت بتوافر إصدار جديد. يمكننا القيام بذلك عن طريق تحديد عنوان URL فريد لكل إصدار من الموارد. على سبيل المثال، افترض أن لدينا مورد باسم " my_stylesheet.css". يمكننا إعادة تسمية الملف إلى " my_stylesheet_fingerprint.css". عندما يتغير المورد، تتغير بصمته، ويتغير عنوان URL المقابل وفقًا لذلك. بمجرد تغيير عنوان URL، يفرض النظام على المتصفح الزحف إلى الموارد مرة أخرى. مع بصمات الأصابع، يمكننا حتى تعيين تواريخ انتهاء الصلاحية المستقبلية للموارد التي تتغير بشكل متكرر.
تتمثل الطريقة الشائعة للتعرف على بصمات الأصابع في استخدام رقم سداسي عشري 128 بت يقوم بترميز قيمة تجزئة محتوى الملف.
هناك استراتيجية أخرى تتمثل في إنشاء دليل إصدار جديد مباشرة للتطبيق الجديد، ثم وضع جميع الموارد لكل إصدار في دليل الإصدار. عيب هذا هو أنه إذا لم تتغير الموارد في كل إصدار، فسيظل عنوان URL الخاص به يتغير لفرض إعادة التنزيل. لا تواجه هذه المشكلة مع قيم تجزئة المحتوى، ولكن هذه الطريقة أكثر تعقيدًا قليلاً.
باستثناء ملاحظة أخرى، فإن محتوى هذه الصفحة مرخص به بموجبالسمة المشتركة الإبداعية 3.0 License, and code samples are licensed under the طراز Apache 2.0 Licenseمن أجل المفصولين، انظرالسياسات الموقعية.