حين تكون الصفحاتُ العامّة سريعةً واللوحةُ بطيئة فأنت لا تقيس الشيء نفسه مرّتين في العادة. الصفحاتُ العامّة تُقدَّم من مخزن، واللوحةُ تُشغّل تطبيقك مع كلّ نقرة. وسرعةُ اللوحة هي سرعةُ الموقع الحقيقيّة.
تأكّد أنّ المخزن هو الفرق
curl -sSI https://yourdomain.com/ | grep -i x-cache
curl -sSI https://yourdomain.com/admin/ -H 'Cookie: session=...' | grep -i x-cache
HIT في الأولى وBYPASS في الثانية هو التفسيرُ كلُّه. انظر تخزين الصفحات ومتى يكذب عليك.
ثمّ اعرف ما يفعله التطبيق فعلًا
- الاستعلامات. فعرضُ قائمةٍ في اللوحة يحمّل لكلّ صفٍّ أكثر بكثير ممّا تحمّله صفحةٌ عامّة. انظر استعلامات N+1.
- نداءٌ خارجيّ عند تحميل الصفحة — فحصُ ترخيصٍ أو فحصُ تحديثٍ أو تغذية — فتنتظر اللوحةُ خادمَ شخصٍ آخر.
- جدولُ سجلٍّ أو نشاطٍ كبر وصار يُعَدّ في كلّ صفحة.
- عشراتُ السكربتات الخاصّة باللوحة، وتلك مشكلةُ متصفّحٍ لا مشكلةُ خادم.
قِس الانقسام
curl -sS -o /dev/null -w 'ttfb %{time_starttransfer} total %{time_total}\
' \
-H 'Cookie: session=...' https://yourdomain.com/admin/
زمنُ أوّل بايتٍ مرتفعٌ يعني الخادم، وزمنٌ منخفضٌ مع مجموعٍ بطيء يعني المتصفّح. وذلك السطرُ وحده يقرّر أين تنظر، ويأخذ ثانية.
الجاني المعتاد
SELECT COUNT(*) FROM wp_options WHERE autoload = 'yes';
SELECT option_name, LENGTH(option_value) FROM wp_options
WHERE autoload = 'yes' ORDER BY 2 DESC LIMIT 10;
كلُّ ما يُحمَّل تلقائيًّا يُقرأ في كلّ طلبٍ بلا استثناء. وعدّةُ ميغابايتاتٍ منه — خلّفتها إضافةٌ أُزيلت — تُبطئ كلّ صفحة، وتظهر في اللوحة أوّلًا لأنّ شيئًا هناك ليس مخزَّنًا.
عطّل نصف الإضافات في بيئة التجربة وقِس. ثمّ نصف الباقي. أربعُ جولاتٍ تجد الإضافة، والتخمينُ لا يجدها.
