استخراج ملفات CSS المهمة

تعرَّف على كيفية تحسين أوقات العرض باستخدام أسلوب CSS المهم.

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

صورة توضيحية لكمبيوتر محمول وجهاز جوّال مع صفحات ويب تتجاوز حواف الشاشات

إنّ تضمين الأنماط المستخرَجة في <head> من ملف HTML يُلغي الحاجة إلى تقديم طلب إضافي لجلب هذه الأنماط. ويمكن تحميل الجزء المتبقّي من CSS بشكل غير متزامن.

ملف HTML يتضمّن ملف CSS مهمًا مضمّنًا في الرأس
CSS المهم المضمّن

يمكن أن يؤدي تحسين أوقات العرض إلى تغيير كبير في الأداء المُلاحظ، خاصةً في ظروف الشبكة السيئة. في الشبكات الجوّالة، يشكّل وقت الاستجابة المرتفع مشكلة بغض النظر عن معدل نقل البيانات.

مقارنة في عرض الصور المتسلسلة لتحميل صفحة تتضمّن ملفات CSS تحظر عرض المحتوى (أعلى) والصفحة نفسها التي تتضمّن ملفات CSS مهمة مضمّنة (أسفل) على اتصال بشبكة الجيل الثالث يعرض شريط الصور السينمائي العلوي ستة إطارات فارغة قبل عرض المحتوى أخيرًا. يعرض شريط الأفلام في أسفل الصفحة محتوى مفيدًا في الإطار الأول.
مقارنة بين تحميل صفحة تتضمّن ملف CSS يحظر عرض المحتوى (أعلى) والصفحة نفسها التي تتضمّن ملف CSS مهمًا مضمّنًا (أسفل) على اتصال بشبكة الجيل الثالث

إذا كانت سرعة عرض أول محتوى مرئي (FCP) منخفضة وظهرت لك فرصة "القضاء على الموارد التي تحظر العرض" في عمليات تدقيق Lighthouse، ننصحك بتجربة CSS المُهمّة.

تدقيق Lighthouse الذي يتضمّن فرص &quot;إزالة الموارد التي تحظر العرض&quot; أو &quot;تأخير صفحات CSS غير المستخدَمة&quot;

لتقليل عدد عمليات تبادل البيانات ذهابًا وإيابًا لعرض الصفحة لأول مرة، احرص على إبقاء حجم محتوى الجزء المرئي من الصفحة أقل من 14 كيلوبايت (مضغوط).

ويعتمد تأثير الأداء الذي يمكنك تحقيقه باستخدام هذه التقنية على نوع موقعك الإلكتروني. بشكل عام، كلما زاد عدد ملفات CSS في الموقع الإلكتروني، زاد التأثير المحتمل لملفات CSS المضمّنة.

نظرة عامة على الأدوات

هناك عدد من الأدوات الرائعة التي يمكنها تحديد ملف CSS المهم تلقائيًا لصفحة معيّنة. وهذا خبر سارّ لأنّ إجراء ذلك يدويًا سيكون عملية مملة. ويتطلّب ذلك تحليل نموذج DOM بالكامل لتحديد الأنماط التي يتم تطبيقها على كل عنصر في مساحة العرض.

مشاكل ملحّة

مهمّة: تستخرج هذه الوحدة محتوى CSS المعروض فوق مستوى الصفحة وتصغّره وتضمّنه، وهي متاحة كـ وحدة npm. ويمكن استخدامه مع Gulp (مباشرةً) أو مع Grunt (بصفته plugin)، وهناك أيضًا مكوّن إضافي webpack.

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

criticalCSS

CriticalCSS هي وحدة npm أخرى تستخرج ملف CSS الذي يظهر فوق مستوى الصفحة. وهو متاح أيضًا كواجهة سطر أوامر.

لا تتوفّر فيه خيارات لتضمين ملفات CSS المهمة وضغطها، ولكنه يتيح لك تضمين القواعد التي لا تنتمي إلى ملفات CSS المهمة بشكلٍ إجباري، كما يمنحك مزيدًا من التحكّم الدقيق في تضمين تعريفات @font-face.

شقة بنتهاوس

Penthouse هو خيار جيد إذا كان موقعك الإلكتروني أو تطبيقك يتضمّن عددًا كبيرًا من الأنماط أو الأنماط التي يتم إدخالها ديناميكيًا في DOM (وهو أمر شائع في تطبيقات Angular). ويستخدم Puppeteer في الخلفية، ويقدّم أيضًا إصدارًا مستضافًا على الإنترنت.

لا يرصد Penthouse أوراق الأنماط تلقائيًا، وعليك تحديد ملفات HTML وCSS التي تريد إنشاء أوراق CSS أساسية لها. أمّا الجانب الإيجابي، فهو أنّه جيد في تنفيذ العديد من المهام بشكل موازٍ.