لماذا يكون خادمك بطيء الاستجابة
TTFB مشكلة خادم وشبكة بالكامل تقريبًا، لا مشكلة واجهة أمامية. الأسباب الشائعة:
- البدء البارد (Cold starts). دوال بلا خادم (serverless) يجب أن تُشغِّل بيئة تنفيذ قبل معالجة أول طلب بعد فترة خمول.
- عرض ديناميكي غير مخزَّن مؤقتًا. كل طلب يعيد تشغيل استعلامات قاعدة بيانات وعرضًا من جانب الخادم كان يمكن تخزينهما مؤقتًا أو حسابهما مرة واحدة.
- استعلامات قاعدة بيانات بطيئة. استعلام واحد غير مفهرس أو نمط N+1 يمكن أن يضيف مئات المللي ثانية قبل أن يبدأ الخادم حتى في كتابة استجابة.
- مسافة فيزيائية طويلة إلى الخادم الأصلي. زائر في سنغافورة يتصل بخادم في فيرجينيا يدفع ثمن تلك الرحلة ذهابًا وإيابًا في كل طلب، بغض النظر عن سرعة استجابة الخادم نفسه.
- سلاسل إعادة توجيه. كل قفزة (http ← https ← www ← الرابط النهائي) رحلة كاملة ذهابًا وإيابًا قبل أن تبدأ الاستجابة الحقيقية أصلًا.
كيفية تحديد ما هو بطيء فعلًا
تلتقط فحوص الأداء في Scanverra قيمة TTFB كجزء من نفس عملية Lighthouse المستخدمة لقياس LCP وCLS، مقابل عنوان URL الحي الخاص بك - فتحصل على رقم زمن استجابة الخادم الفعلي، لا بديلًا تقريبيًا عنه. هذا مهم لأن LCP بطيء مع TTFB سريع يوجّهك نحو إصلاحات الصور/العرض، بينما LCP بطيء مع TTFB بطيء يعني أن إصلاح الخادم يجب أن يأتي أولًا.
لتحديد أين يذهب الوقت فعليًا، تحقق من تفصيل التوقيت من جانب الخادم لدى مزوّد الاستضافة أو مراقبة الأداء (APM) لديك (تُبلغ معظم المنصات عن الوقت المستغرق في تهيئة الدالة واستدعاءات قاعدة البيانات وتسلسل الاستجابة كل على حدة) بدلًا من التخمين من الخارج.
كيفية الإصلاح
1. خزّن مؤقتًا ما لا يحتاج إعادة توليد في كل طلب
أي شيء يبقى نفسه لكل زائر - أو لكل زائر في شريحة معينة - مرشح للتخزين المؤقت. اضبط عمر تخزين مؤقت صريحًا عند حافة CDN بدلًا من ترك كل طلب يصل إلى الخادم الأصلي:
1Cache-Control: public, max-age=60, stale-while-revalidate=3002. ضع خادمك الأصلي (أو طبقة تخزين مؤقت على الأقل) قريبًا من مستخدميك
انشر في منطقة قريبة من حركة المرور الفعلية لديك، أو ضع تخزينًا مؤقتًا/CDN عند الحافة أمام خادم أصلي بعيد بحيث لا تقطع معظم الطلبات الرحلة الطويلة أصلًا.
3. أصلح الاستعلام البطيء، لا العرَض
إذا أظهرت أداة مراقبة الأداء لديك أن وقت قاعدة البيانات يهيمن على TTFB، فذلك عادة فهرس مفقود، أو نمط استعلام N+1، أو استعلام يقوم بعمل أكثر مما تحتاجه الصفحة فعلًا - قيّم الاستعلام المحدد قبل اللجوء إلى التخزين المؤقت كحل مؤقت.
4. قلّل تكرار البدء البارد في الدوال بلا خادم
أبقِ الدوال دافئة للمسارات الحساسة للزمن، وقلّل الكود والتبعيات التي يجب تهيئتها قبل تشغيل المعالج، وفكّر في خادم دائم لأنماط حركة المرور التي يحدث فيها البدء البارد باستمرار.
5. اطوِ سلاسل إعادة التوجيه
كل قفزة بين الرابط الذي يطلبه المستخدم والرابط الذي يقدّم المحتوى فعليًا هي رحلة كاملة ذهابًا وإيابًا تُضاف إلى TTFB قبل أن يبدأ العرض - وجّه الروابط والروابط الأساسية (canonical) مباشرة إلى الوجهة النهائية.
كيف تكتشف Scanverra مشاكل TTFB
يُلتقط TTFB مباشرة من نفس عملية Lighthouse الحقيقية التي تشغّلها Scanverra لكل فحص أداء - على كل من ملف سطح مكتب ونافذة عرض للجوال بعرض 375 بكسل - فيُقاس مقابل استجابة خادمك الحية الفعلية، لا محاكاة.