التأكّد من إمكانية استعادة الصفحة من خلال ميزة "التخزين المؤقت للصفحات"

الخلفية

تخزِّن ميزة "التخزين المؤقت للصفحات" (bfcache) لقطة شاشة للصفحة في الذاكرة عند استعادتها من سجلّ التنقّل. يؤدي ذلك إلى تسريع عمليات الرجوع إلى الصفحة بشكل كبير، ولكن يمكن أن تؤدي بعض واجهات برمجة التطبيقات للمتصفّح (مثل مستمعي التحميل) إلى تعذُّر استخدام ميزة bfcache وسيتم تحميل الصفحة بشكلٍ طبيعي.

كيفية رصد Lighthouse لأعطال ميزة "التخزين المؤقت للصفحات"

عمليات التنقّل المستقلة

في نهاية عملية تنقّل مستقلة، سينتقل Lighthouse بعيدًا عن الصفحة وسيحاول استعادتها من سجلّ التنقّل لرصد ما إذا كان يتم استخدام ذاكرة التخزين المؤقت bfcache.

مسارات المستخدِمين

لن يختبر Lighthouse ذاكرة التخزين المؤقت bfcache بشكل نشط في التنقّل عند تشغيل مسار مستخدِم. ويعود السبب في ذلك إلى أنّ الانتقال بعيدًا عن الصفحة والعودة إليها في نهاية كل عملية تنقّل لا يعكس معظم تجارب المستخدمين على الصفحة.

ومع ذلك، لا يزال بإمكانك اختبار استخدام bfcache في وضع "الفترات الزمنية" من خلال تضمين تنقّل في السجلّ كجزء من رحلة المستخدِم. على سبيل المثال:

const flow = await startFlow(page);

// This navigation will not test the bfcache
// because it is part of a user flow.
await flow.navigate('https://example.com');

// This timespan will try to restore the page from the bfcache.
// Problems restoring from the bfcache are surfaced in this report.
await flow.startTimespan();
await page.goto('https://example2.com');
await page.goBack();
await flow.endTimespan();

فهم حالات تعذُّر استخدام ميزة "التخزين المؤقت للصفحات"

إذا تعذّر استعادة الصفحة من ذاكرة التخزين المؤقت للصفحات (bfcache) لأي سبب، سيتعذّر إكمال عملية التدقيق. سيُدرج Lighthouse أي أسباب تعذّر فيها استخدام ذاكرة التخزين المؤقت bfcache، بالإضافة إلى اللقطات التي تسبّبت في المشكلة. يمكن أن تندرج أسباب عدم التوافق ضمن أحد الأنواع الثلاثة التالية:

  • المشاكل التي يمكن معالجتها: يمكنك حلّ هذه المشاكل لتفعيل ميزة التخزين المؤقت.
  • في انتظار المراجعة: لا يتيح متصفّح Chrome استخدام هذه الميزات بعد، لذا يمنع التخزين المؤقت. ومع ذلك، يزيل Chrome هذه القيود بعد أن يصبح متوافقًا.
  • لا يمكن اتّخاذ إجراء بشأنها: لا يمكنك حلّ هذه المشاكل في هذه الصفحة. هناك سبب خارج نطاق التحكّم في الصفحة يمنع التخزين المؤقت.

مثال على نتيجة من تدقيق ميزة "التخزين المؤقت للصفحات" في Lighthouse

الموارد