العودة إلى المدونة

Timing-Allow-Origin: ما الذي تراه أدوات التحليل في Resource Timing API

يتحكم رأس Timing-Allow-Origin في مقدار تفاصيل التوقيت عبر الأصول المختلفة التي يمكن لصفحة قراءتها. إليك ما يعنيه ذلك لقياس الأداء المُراعي للخصوصية.

الرأس الذي لا يضبطه أحد عن قصد

تلتقي معظم الفرق برأس Timing-Allow-Origin (TAO) فقط عندما يُظهر مخطط في أداة المراقبة الخاصة بهم أصفارًا مريبة. تظهر الموارد عبر الأصول المختلفة — الخطوط، والصور من شبكة CDN، وأي نص برمجي من طرف ثالث — في Resource Timing API، لكن توقيتاتها الفرعية التفصيلية تُقرأ على أنها 0 ما لم يوافق الخادم المستجيب صراحةً على مشاركتها. تلك الموافقة هي رأس TAO، وفهمه ضروري إذا أردت بيانات أداء صادقة دون اللجوء إلى التتبع المتطفل.

يُتيح معيار Resource Timing إدخالة PerformanceResourceTiming لكل عملية جلب تقوم بها الصفحة. بالنسبة للموارد من نفس الأصل تحصل على التفصيل الكامل: بحث DNS، واتصال TCP، ومفاوضة TLS، وبدء الطلب، وتوقيتات الاستجابة. أما بالنسبة للموارد عبر الأصول المختلفة، فإن المواصفة تُقيّد عمدًا ما يمكن للمستند قراءته، لأن تلك التوقيتات الدقيقة قد تُسرّب معلومات عن حالة شبكة المستخدم، أو محتويات ذاكرة التخزين المؤقت، أو السلوك الداخلي لأصل آخر.

ما الذي يُصفَّر

بدون رأس TAO مطابق، تُثبَّت السمات التالية في إدخالة PerformanceResourceTiming عبر الأصول المختلفة على الصفر: redirectStart، وredirectEnd، وdomainLookupStart، وdomainLookupEnd، وconnectStart، وconnectEnd، وsecureConnectionStart، وrequestStart، وresponseStart، وtransferSize، وencodedBodySize، وdecodedBodySize. لكنك لا تزال تحصل على startTime، وduration، وresponseEnd، واسم المورد name وinitiatorType. عمليًا، يعني ذلك أنه يمكنك معرفة أن موردًا قد تم تحميله والمدة الإجمالية التي استغرقها، لكن ليس أين ذهب الوقت أو كم عدد البايتات التي عبرت الشبكة.

يُعرَّف هذا الفحص بواسطة خوارزمية timing allow check في مواصفة Resource Timing. ينجح المورد إذا حملت استجابته Timing-Allow-Origin بقيمة تساوي إما أصل المستند الطالب أو تكون علامة البدل *.

Timing-Allow-Origin: https://example.com
# or, to allow any origin
Timing-Allow-Origin: *

لماذا يهم هذا للتحليلات المُراعية للخصوصية

تقيس Monoid الأداء من الميدان — عمليات تنقل حقيقية من زوار حقيقيين — دون ملفات تعريف الارتباط، ودون localStorage، ودون بصمة الجهاز. تُعد واجهتا Resource Timing وNavigation Timing الطريقة القائمة على المعايير للقيام بذلك، وTAO هو الآلية التي تستخدمها المنصة للحفاظ على سرية بيانات التوقيت عبر الأصول المختلفة بشكل افتراضي.

ذلك الإعداد الافتراضي ميزة خصوصية، وليس عائقًا. يوجد التصفير تحديدًا لمنع صفحة من فحص أصول الطرف الثالث بحثًا عن قنوات جانبية للتوقيت. عندما نوصي بضبط Timing-Allow-Origin على أصولك الثابتة وشبكة CDN الخاصة بك، فإننا نطلب منك إتاحة بنيتك التحتية أنت للرؤية من أجل قياساتك أنت — لا إضعاف حماية أي أحد.

تُعزز Core Web Vitals هذه النقطة. غالبًا ما يكون Largest Contentful Paint صورة عبر الأصول المختلفة أو خط ويب. إذا افتقرت تلك الاستجابات إلى رأس TAO، فما زال بإمكانك رصد عنصر LCP عبر Largest Contentful Paint API، لكنك تفقد التوقيتات الفرعية للطلب والاستجابة التي كانت لتخبرك بما إذا كان بطء DNS، أو مصافحة TLS باردة، أو نقل كبير هو ما تسبب في التأخير. تُحوّل إضافة الرأس إلى أصول موجوداتك رقمًا غامضًا إلى رقم قابل للتنفيذ.

ضبطه بشكل صحيح

بعض الملاحظات العملية. أولًا، كون transferSize غير صفري يتيح لك أيضًا التمييز بين إصابة ذاكرة التخزين المؤقت (حجم نقل صغير) وجلب من الشبكة، وهو أمر لا يُقدَّر بثمن عند تشخيص أداء العرض المتكرر. ثانيًا، إذا قدّمت الخطوط عبر الأصول المختلفة، فإن سمة CSS ‏crossorigin وCORS مسألة منفصلة عن TAO — قد تحتاج إلى كليهما. ثالثًا، فضّل تسمية أصول محددة على * حيثما أمكن، بحيث تتلقى البيانات فقط المستندات التي تحتاجها بشكل مشروع.

على Cloudflare، يمكنك إضافة الرأس عند الحافة باستخدام Transform Rule أو في استجابة Worker، وتطبيقه على مسارات موجوداتك. ولأن Monoid تعمل على الحافة ذاتها، تتدفق بيانات التوقيت التي تجمعها متصفحات زوارك مباشرةً إلى مقاييس مُجمّعة وخالية من المُعرّفات — دون الحاجة إلى ملف تعريف لكل مستخدم لمعرفة أن صورتك الرئيسية تقضي 400 مللي ثانية في TLS.

الخلاصة

Timing-Allow-Origin رأس صغير ذو تأثير هائل على مقدار ما يمكنك تعلمه من بيانات الأداء الميدانية. إن الإعداد الافتراضي للمتصفح — تصفير التوقيتات الفرعية عبر الأصول المختلفة — هو حماية متعمّدة للخصوصية، ويتماشى تمامًا مع الطريقة التي ينبغي أن تعمل بها التحليلات المُراعية للخصوصية: قِس المجاميع من واجهات قياسية، وأتِح أصولك الخاصة للتفصيل صراحةً، ولا تعامل أبدًا بصمة شبكة المستخدم كشيء يُجمع. اضبط TAO على موجوداتك، وسيصبح تصحيح أخطاء Web Vitals لديك أكثر دقة دون أي تتبع على الإطلاق.

Sources

Comments

Loading comments…