أنواع التنقّل المتوفّرة الآن في "تقرير تجربة المستخدم على Chrome"

بدءًا من مجموعة بيانات مارس 2024، يتضمّن تقرير تجربة المستخدم على Chrome مقياسًا navigation_types. تقدِّم هذه الميزة إحصاءات مجمَّعة عن أنواع التنقّل لعمليات تحميل الصفحات للسمة التي تم طلبها.

تؤدّي أنواع التنقّل المختلفة إلى اختلافات في مقاييس الأداء، لذا عند الاطّلاع على أداء موقعك الإلكتروني، من المفيد معرفة معدّل التكرار النسبي لهذه الأنواع المختلفة. على سبيل المثال، عند استخدام ميزة الانتقال للخلف (bfcache)، يؤدي ذلك عادةً إلى انتقال شبه فوري يظهر في مقاييس صغيرة جدًا لـ LCP وFCP وتقليل مقاييس متغيّرات التصميم التراكمية (CLS) و"مدى استجابة الصفحة لتفاعلات المستخدم" (INP).

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

يتوفّر المقياس navigation_types في واجهة برمجة التطبيقات اليومية CrUX API وواجهة برمجة التطبيقات CrUX History API (التي تتضمّن سجلّاً لمدّة 3 أسابيع في البداية وتزيد التغطية الأسبوعية إلى التغطية الكاملة على مدار الأشهر الستة التالية) وأحدث مجموعة بيانات CrUX في BigQuery ولوحة بيانات CrUX. يتيح سجلّ البحث لمالكي المواقع الإلكترونية أيضًا الاطّلاع على التغييرات في استخدام نوع التنقّل بمرور الوقت. ويمكن أن يسمح ذلك بتتبُّع التحسينات (على سبيل المثال، إزالة حظر الوصول إلى ذاكرة التخزين المؤقت). يمكن أن يساعد أيضًا في شرح التغييرات التي تطرأ على المقاييس حتى في حالة عدم إجراء أي تغييرات على المواقع.

يميّز CrUX أنواع التنقل التالية في الجدول التالي:

النوع الوصف
navigate تحميل صفحة لا يتناسب مع أي فئة من الفئات الأخرى
navigate_cache تحميل صفحة تم عرض المورد الرئيسي (مستند HTML الرئيسي) له من ذاكرة التخزين المؤقت HTTP. تستخدم المواقع الإلكترونية عادةً التخزين المؤقت للموارد الفرعية، إلا أنّ مستند HTML الرئيسي غالبًا ما يتم تخزينه مؤقتًا بوتيرة أقل بكثير. وعندما يكون ذلك ممكنًا، يمكن أن يؤدي إلى تحسينات ملحوظة في الأداء من إمكانية التخزين المؤقت محليًا وفي شبكة توصيل المحتوى (CDN).
reload أعاد المستخدم تحميل الصفحة، إما بالضغط على زر إعادة التحميل، أو بالضغط على المفتاح Enter في شريط العناوين، أو بالتراجع عن إغلاق علامة التبويب. غالبًا ما تؤدي عمليات إعادة تحميل الصفحة إلى إعادة التحقق إلى الخادم للتحقق مما إذا كانت الصفحة الرئيسية قد تغيرت. وقد يشير ارتفاع نسبة عمليات إعادة تحميل الصفحة إلى شعور المستخدمين بالإحباط.
restore وتمت إعادة تحميل الصفحة بعد إعادة تشغيل المتصفّح أو علامة تبويب تمت إزالتها لأسباب تتعلق بالذاكرة. في متصفِّح Chrome على أجهزة Android، يتم الإبلاغ عن هذه الأخطاء على أنّها reload بدلاً من ذلك.
back_forward التنقل في السجل، وهو ما يعني أنه تم عرض الصفحة والرجوع إليها مؤخرًا. ومن خلال التخزين المؤقت الصحيح، من المفترض أن تكون تجارب سريعة بشكل معقول، ولكن لا تزال تتطلّب معالجة الصفحة وتنفيذ JavaScript، علمًا أنّ كلا الأمرين يتجنّبهما ذاكرة التخزين المؤقت.
back_forward_cache التنقّل في السجلّ الذي تم عرضه من خلال ذاكرة التخزين المؤقت إنّ تحسين صفحاتك للاستفادة من ميزة "التخزين المؤقت للصفحات" من المفترض أن يؤدي إلى تجارب أسرع. من المفترض أن تلجأ المواقع الإلكترونية إلى إزالة أدوات حظر ميزة "التخزين المؤقت للصفحات" لتحسين النسبة المئوية لعمليات التنقّل في هذه الفئة.
prerender تم عرض الصفحة مسبقًا، والذي يمكن أن يؤدي إلى عمليات تحميل للصفحة على نحو شبه فوري، على غرار ميزة "التخزين المؤقت للصفحات".

في بعض الحالات، قد يكون تحميل الصفحة عبارة عن مجموعة من أنواع التنقل المتعددة. في هذه الحالة، تعرض CrUX أول تطابق بترتيب عكسي للجدول السابق (من الأسفل إلى الأعلى).

قيود أنواع التنقل في CrUX

نظرًا لأن CrUX هي مجموعة بيانات عامة، فإن دقة إعداد التقارير بها محدودة. لا يتوفّر المقياس navigation_types في العديد من المصادر وعناوين URL، وذلك بسبب عدم كفاية عدد الزيارات المؤهَّلة. راجِع منهجية CrUX للحصول على مزيد من المعلومات.

بالإضافة إلى ذلك، يتعذّر على CrUX توفير تقسيم للمقاييس الأخرى حسب نوع التنقّل، لأنّ ذلك سيقلل بشكل أكبر من عدد المصادر وعناوين URL المتاحة في CrUX.

ننصح المواقع الإلكترونية بتنفيذ ميزة "مراقبة المستخدم الفعلي" (RUM) الخاصة بها لتتمكّن من تقسيم الزيارات حسب معايير مثل أنواع التنقّل. تجدر الإشارة إلى أنّك قد تلاحظ اختلافات في أنواع التنقّل في هذه الحلول استنادًا إلى الأنواع التي يتم الإبلاغ عنها ومرّات مشاهدة الصفحة على الويب التي يتمّ تضمينها. راجِع المقالة لماذا تختلف بيانات CrUX عن بيانات RUM؟.

ويمكن أن توفر تقنية RUM أيضًا مستوى أكبر من التفاصيل حول مشاكل محدّدة في الأداء. على سبيل المثال، على الرغم من أنّ CrUX قد يشير ضمنًا إلى أنّ تحسين أهلية استخدام ميزة "التخزين المؤقت للصفحات" قد يكون مفيدًا، يمكن أن تحدّد واجهة برمجة التطبيقات bfcache notRestored أمرًا API سبب تعذّر عرض تحميل صفحة معيّنة من خلال ذاكرة التخزين المؤقت.

أنواع التنقّل في واجهة برمجة تطبيقات CrUX

للاطّلاع على أنواع التنقّل في واجهة برمجة التطبيقات، يمكنك تضمين مقياس "navigation_types" في الطلب، أو عدم ضبط مقياس ليتم تضمين جميع المقاييس:

export API_KEY="[YOUR_API_KEY]"
curl "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=$API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{"origin": "https://example.com", metrics: ["navigation_types"]}'

يمكنك الاطّلاع على المزيد من التفاصيل حول تنسيق الطلب في مستندات واجهة برمجة التطبيقات، بما في ذلك شرح حول كيفية الحصول على مفتاح واجهة برمجة التطبيقات ودليل واجهة برمجة التطبيقات. سيؤدي هذا إلى إرجاع كائن مثل هذا:

{
  "record": {
    "key": {  "origin": "https://example.com" },
    "metrics": {
      "navigation_types": {
        "fractions": {
          "navigate": 0.5335,
          "navigate_cache": 0.2646,
          "reload": 0.0885,
          "restore": 0.0023,
          "back_forward": 0.0403,
          "back_forward_cache": 0.0677,
          "prerender": 0.0031
        }
      }
    },
    "collectionPeriod": {
      "firstDate": { "year": 2024, "month": 3, "day": 6 },
      "lastDate": { "year": 2024, "month": 4, "day": 2 }
    }
  }
}

وفي الردّ، يوضِّح تقرير تجربة المستخدم (CrUX) المقياس navigation_types على أنّه عنصر يحتوي على أجزاء تحميل الصفحة لكل نوع من أنواع التنقّل. كل كسر هو قيمة بين 0.0 (يشير إلى 0% من عمليات تحميل الصفحات) إلى 1.0، (يشير إلى 100% من عمليات تحميل الصفحات) للمفتاح المحدّد.

يوضّح هذا الردّ أنّه خلال فترة جمع البيانات التي تبدأ من 6 آذار (مارس) 2024 وحتى 2 نيسان (أبريل) 2024، بما في ذلك 2 نيسان (أبريل) 2024، تم عرض% 6.77 من عمليات التنقّل (عمليات تحميل الصفحات) من خلال ذاكرة التخزين المؤقت في المتصفّح. وبالمثل، يمكن أن تساعد بعض الكسور الأخرى في تحديد فرص تحسينات تحميل الصفحات. يُرجى العِلم أنّه بالنسبة إلى أي مفتاح محدّد (بما في ذلك تركيبة من عنوان URL أو المصدر وشكل الجهاز)، سيكون مجموع كسور navigation_types يصل إلى 1.0 تقريبًا.

أنواع التنقّل في واجهة برمجة تطبيقات سجلّ CrUX

يمكن أن توفّر CrUX History API سلسلة زمنية لأنواع التنقّل التي تضم ما يصل إلى 25 نقطة بيانات لكل كسر، ما يسمح بتمثيل هذه الكسور بمرور الوقت. لتغيير طلبك من واجهة برمجة التطبيقات CrUX API إلى واجهة برمجة تطبيقات سجلّ CrUX، يمكنك تنفيذه على نقطة النهاية queryHistoryRecord بدلاً من queryRecord. على سبيل المثال، تعرض CrUX History Colab المقياس navigation_types كأشرطة مكدسة:

رسم بياني شريطي مكدّس يعرض سجلّ أنواع التنقّل على مدار 3 أسابيع، مع ظهور "التنقل" في الغالبية بدون تغييرات كبيرة على مدار الأسابيع الثلاثة.
أنواع التنقّل بمرور الوقت

في لقطة الشاشة السابقة، يتوفر السجلّ لثلاث فترات جمع فقط (28 يومًا لكل منها، بفاصل 7 أيام). بعد تعبئة النموذج بالكامل، سيشمل ذلك جميع فترات جمع البيانات الخمسين. يتيح استعراض هذا السجلّ إمكانية التأكّد من أنّ التحسينات أصبحت سارية المفعول أو تراجعت. وينطبق هذا بشكل خاص على تهيئة ذاكرة التخزين المؤقت لـ HTTP، وهو تحسين الصفحة لاستخدام ذاكرة التخزين المؤقت والعرض المسبق.

أنواع التنقّل في CrUX BigQuery

تتضمّن جداول CrUX في BigQuery الآن سجلّ navigation_type تم إنشاؤه من كل نوع، بينما تتضمّن طرق العرض الموجزة المعروضة أعمدة navigation_types_* متعددة، عمود واحد لكل نوع.

الجداول التفصيلية

يوفّر مخطّط الجدول المفصّل في CrUX BigQuery مدرجات تكرارية مفصّلة لمقاييس أداء الويب، ما يتيح لنا في هذا المثال توضيح كيفية ارتباط أنواع تنقُّل معيّنة بأداء التحميل الفوري أو الجيد.

على سبيل المثال، اطّلعنا على الكسر back_forward_cache وعلاقته بمعدَّل تكرار تحميل الصفحات بشكل فوري (القيمة instant_lcp_density التي تُعرف بأنّها LCP <= 200 ملي ثانية) ومدى تكرار سرعة عرض أكبر جزء من المحتوى على الصفحة (LCP) (القيمة good_lcp_density تُعرَّف بأنها LCP <= 2, 500 ملي ثانية). لاحظنا ارتباطًا إحصائيًا قويًا بين back_forward_cache وinstant_lcp_density (}}=0.87 - كما هو موضح في الرسم التالي - وارتباط معتدل بين back_forward_cache وgood_lcp_density (}}=0.29).

رسم بياني للارتباط يُظهر ارتباطًا قويًا بين نسبة عمليات تحميل الصفحات الفورية والنسبة التي يتم تحميلها في صفحة bfcache
الارتباط بين عمليات تحميل الصفحات الفورية لاستخدام ميزة "التخزين المؤقت للصفحات"

لقد حصلنا على تعليقات جيدة من Colab لهذا التحليل، وهنا، نناقش فقط الاستعلام الذي يستخرج كسور shopping_types لـ 10 آلاف من الأصول الأكثر شيوعًا من الجداول التفصيلية في CrUX BigQuery:

  • يمكن الوصول إلى جدول all.202403 هنا (اطّلِع على الفقرة FROM) وفلتر form_factor حسب phone واختَر المصادر ذات الترتيب الأكثر رواجًا <= 10,000 لتحديد أهم 10 آلاف أصل (اطّلِع على عبارة WHERE).
  • عند طلب البحث عن مقياس navigation_types في BigQuery، من الضروري القسمة على إجمالي كسور navigation_types، لأنّه سيتم جمعها فقط لكل أصل، وليس لكل مجموعة (المصدر، شكل الجهاز).
  • لن تحتوي بعض المصادر على navigation_types، لذا من المفيد استخدام SAVE_DIVIDE.
WITH tmp AS (
  SELECT
    origin,
    SUM(navigation_types.navigate.fraction) AS navigate,
    SUM(navigation_types.navigate_cache.fraction) AS navigate_cache,
    SUM(navigation_types.reload.fraction) AS reload,
    SUM(navigation_types.restore AS restore,
    SUM(navigation_types.back_forward.fraction) AS back_forward,
    SUM(navigation_types.back_forward_cache.fraction) AS back_forward_cache,
    SUM(navigation_types.prerender.fraction) AS prerender,
    SUM(navigation_types.navigate.fraction
      + navigation_types.navigate_cache.fraction
      + navigation_types.reload.fraction
      + navigation_types.restore.fraction
      + navigation_types.back_forward.fraction
      + navigation_types.back_forward_cache.fraction
      + navigation_types.prerender.fraction) AS total
  FROM
    `chrome-ux-report.all.202403`
  WHERE
    experimental.popularity.rank <= 10000 AND
    form_factor.name = 'phone'
  GROUP BY
    origin
)

SELECT
  origin,
  ROUND(SAFE_DIVIDE(navigate, total), 4) AS navigate,
  ROUND(SAFE_DIVIDE(navigate_cache, total), 4) AS navigate_cache,
  ROUND(SAFE_DIVIDE(reload, total), 4) AS reload,
  ROUND(SAFE_DIVIDE(restore, total), 4) AS restore,
  ROUND(SAFE_DIVIDE(back_forward, total), 4) AS back_forward,
  ROUND(SAFE_DIVIDE(back_forward_cache, total), 4) AS back_forward_cache,
  ROUND(SAFE_DIVIDE(prerender, total), 4) AS prerender
FROM
  tmp

الجداول المجسَّمة

عندما يكون الملخّص كافيًا، يكون غالبًا أكثر ملاءمةً (وأقل تكلفة) لطلب البحث عن الجداول الفعلية بدلاً من ذلك. على سبيل المثال، يستخلص طلب البحث التالي بيانات navigation_types المتاحة من جدول chrome-ux-report.materialized.device_summary. يستند هذا الجدول إلى بيانات الشهر والمصدر ونوع الجهاز.

SELECT
  yyyymm,
  device,
  navigation_types_navigate,
  navigation_types_navigate_cache,
  navigation_types_reload,
  navigation_types_restore,
  navigation_types_back_forward,
  navigation_types_back_forward_cache,
  navigation_types_prerender
FROM
  chrome-ux-report.materialized.device_summary
WHERE
  origin = 'https://example.com' AND
  navigation_types_navigate IS NOT NULL
ORDER BY
  yyyymm DESC,
  device DESC

تجدر الإشارة إلى أنّ هذه الكسور لن تضيف ما يصل إلى 1.0 لكل صف، لذا من الضروري تقسيم كل كسر على مجموع النتائج التي سيتم تفسير طلب البحث عليها.

يرجع سبب ذلك إلى أنّ كسور navigation_type في chrome-ux-report.materialized.device_summary، مثل كثافة المدرّج التكراري، تضيف ما يصل إلى 1.0 لكل أصل بدلاً من إضافة كل من المصدر والجهاز في التاريخ. يتيح لك هذا عرض توزيع نوع التنقل عبر الأجهزة:

SELECT
  device,
  navigation_types_back_forward
FROM
  chrome-ux-report.materialized.device_summary
WHERE
  origin = 'https://www.google.com' AND
  yyyymm = 202403
device navigation_types_back_forward
phone 0.0663
desktop 0.0179
tablet 0.0009

في نتيجة طلب البحث هذا، تعكس الكسور النسبة المئوية لعمليات تحميل الصفحة لأصل https://www.google.com: إنّ 6.63% من عمليات تحميل الصفحات هذه لها نوع التنقّل back_forward على الهاتف، و1.79% على أجهزة الكمبيوتر المكتبية، و0.09% على الأجهزة اللوحية.

تشير نسبة back_forward الأعلى بشكل كبير على phone إلى أنّه يمكننا محاولة تحسين عمليات تحميل الصفحات هذه ليتم عرضها من خلال ميزة bfcache.

ومع ذلك، من المهم أيضًا مراعاة الكسر الذي يتم عرضه من عمليات تحميل الصفحة بواسطة bfcache، أي معدّل نتائج bfcache. يشير الاستعلام التالي إلى أن هذا المصدر الخاص ربما تم تحسينه بشكل جيد بالفعل، نظرًا إلى > 60% من معدلات النتائج على الهاتف والكمبيوتر المكتبي.

SELECT
  device,
  navigation_types_back_forward_cache /
    (navigation_types_back_forward + navigation_types_back_forward_cache)
    AS back_forward_cache_hit_rate
FROM
  chrome-ux-report.materialized.device_summary
WHERE
  origin = 'https://www.google.com' AND
  yyyymm = 202403
device back_forward_cache_hit_rate
phone 0.6239
desktop 0.6805
tablet 0.7353

وبالتالي، قد يبدو أنّ معدّل back_forward المرتفع على الهواتف لا يرجع إلى قلة استخدام ميزة "التخزين المؤقت للصفحات"، إنما يعكس طريقة انتقال المستخدمين إلى الخلف وإلى الأمام على الهواتف بشكل أكبر.

تُعد أسهل طريقة للاطّلاع على أنواع التنقل في لوحة بيانات CrUX، والتي يمكن الوصول إليها من أجل مصدر من هذا الرابط. يمكنك ملاحظة من لقطة الشاشة التالية أنّ البيانات المتوفّرة لشهر واحد فقط لا تتوفّر إلا بيانات شهر واحد فقط، ولكن بمرور الوقت سيملأ السجلّ ما يسمح لك بالاطّلاع على التغييرات في الأنواع كل شهر.

لقطة شاشة لشاشة توزيع أنواع التنقل في لوحة بيانات CrUX تُظهر بيانات شهر واحد.
أنواع التنقّل في لوحة بيانات CrUX

كما ترى أيضًا، لقد أبرزنا أنواع التنقل الأسرع، التي يجب أن تسعى المعالم لتحسينها، في أعلى هذه الصفحة من لوحة المعلومات.

الخاتمة

نأمل أن تكون تقسيمات نوع التنقّل في CrUX مفيدة وأن تساعدك في فهم أداء موقعك الإلكتروني وتحسينه. من خلال ضمان الاستخدام الفعّال للتخزين المؤقت لـ HTTP، والتخزين المؤقت للصفحات، والعرض المسبق، يمكن للمواقع الإلكترونية تحقيق عمليات تحميل للصفحات بشكل أسرع بكثير من عمليات تحميل الصفحات التي تتطلب الرجوع إلى الخادم.

يسرّنا أيضًا توفير البيانات في جميع نقاط الوصول المختلفة إلى تقرير تجربة المستخدم على Chrome حتى يتمكّن المستخدمون من استهلاك البيانات على النحو الذي يريدونه والاطّلاع على تقسيمات الأنواع حسب عنوان URL للمستخدمين الذين تظهر في واجهات برمجة تطبيقات CrUX.

تسرّنا معرفة ملاحظاتك حول هذه الإضافة إلى تقرير تجربة المستخدم على Chrome على وسائل التواصل الاجتماعي أو على مجموعة مناقشة CrUX.