divmagic Make design
SimpleNowLiveFunMatterSimple
كيف يمكن لإصدار المزيد من CSS أن يعزز الأداء فعليًا: منهجية GitHub الهندسية
Blogs›CSS›كيف يمكن لإصدار المزيد من CSS أن يعزز الأداء فعليًا: منهجية GitHub الهندسية
CSS

كيف يمكن لإصدار المزيد من CSS أن يعزز الأداء فعليًا: منهجية GitHub الهندسية

كيف يمكن لشحن المزيد من CSS أن يعزز الأداء فعليًا: نهج هندسة GitHub

عندما يتعلق الأمر بأداء الواجهة الأمامية، كان الشعار دائمًا: شحن CSS أقل. أوراق الأنماط تمنع التقديم؛ كل كيلوبايت يؤخر أول رسم. ومع ذلك، قام فريق هندسة GitHub بشيء يبدو شبه هرطقة، فقد شحنوا المزيد من CSS وجعلوا موقعهم أسرع. في هذا الغوص العميق، سنستكشف الاستراتيجية غير البديهية وراء هذا النجاح، وكيف استفادوا من قدرات HTTP الحديثة، وما يعنيه ذلك لرحلتك الخاصة في تحسين الأداء.

مفارقة أداء CSS

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

يمكن لتقنيات CSS الحرج تحسين أول رسم للمحتوى (FCP) بنسبة تصل إلى 50%، لكنها غالبًا ما تترك جزءًا ضخمًا من CSS المؤجل الذي يجب تحميله في النهاية، مما يسبب تحولات في التخطيط وتفاعلية أبطأ.

لاحظ مطورو GitHub أنه بينما ساعد تضمين CSS الحرج في تحسين FCP، إلا أنه لم يحل مشكلة متزايدة: الحجم الهائل من CSS الذي يتطلبه تطبيقهم المعقد كان يتضخم. نظام التصميم الخاص بهم، والواجهة الغنية بالميزات، والتخطيطات المتجاوبة تعني أنهم لا يستطيعون فقط تقليص الأنماط، بل كانوا بحاجة إلى آلية توصيل أكثر ذكاءً.

كيف عكس GitHub المعادلة

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

work, programming, laptop, working, coding, computer, programmer, technology, office, business, hacker, data, macbook, developer, workspace, workplace, programmer, programmer, programmer, programmer, programmer

  1. تقسيم CSS إلى ملفات متعددة مبنية لغرض معين يمكن تحميلها بشكل مستقل.
  2. الاستفادة من تعدد الإرسال HTTP/2 لخدمة تلك الملفات بشكل متزامن دون حظر الرأس.

على عكس التطرفين "حزمة واحدة كبيرة" أو "تضمين كل شيء"، شحن GitHub المزيد من إجمالي CSS، أحيانًا بمقدار الضعف، لكنه قسمها إلى أجزاء أصغر غير مانعة للتقديم. النتيجة: تحسين مقاييس الأداء الملموسة والفعلية.

"لقد شحننا بالفعل CSS أكثر من ذي قبل، لكننا جعلناه غير مانع للتقديم. يقوم المتصفح بتنزيل ملفات متعددة بالتوازي، لذا يبقى المسار الحرج نحيفًا." – فريق هندسة GitHub

التحليل الفني

إليك ما حدث بالضبط تحت الغطاء:

  • قسموا CSS إلى ثلاث فئات: حرج (مضمن)، أساسي (يُحمّل بشكل غير متزامن بأولوية عالية)، و كسول (يُحمّل عند الطلب للصفحات أو التفاعلات غير الحرجة).
  • تم تمييز أوراق الأنماط الأساسية بـ media="print" onload="this.media='all'" لضمان عدم منعها للتقديم ولكن تطبيقها فور تنزيلها.
  • سمح HTTP/2 ببث كل هذه الملفات عبر اتصال واحد، مما ألغى عقوبة الانتظار في HTTP/1.1.

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

استخدم لوحة التغطية (Coverage) في أدوات المطورين لتحديد CSS غير المستخدم قبل التقسيم. قم فقط بتقسيم ما يحتاج حقًا إلى التحميل غير المتزامن، فالتقسيم المفرط قد يأتي بنتائج عكسية.

مكاسب الأداء في العالم الحقيقي

أظهرت بيانات GitHub الخاصة انخفاضًا بنسبة 30% في أول رسم للمحتوى وتحسنًا بنسبة 40% في أكبر رسم للمحتوى في الصفحات الرئيسية. بعيدًا عن مقاييس المختبر، شعر المستخدمون الحقيقيون باستجابة ملحوظة، وتحسنت معدلات التحويل المدفوعة بالمقاييس أيضًا.

Bar chart comparing First Paint time before (2.4s) and after (1.2s) implementing GitHub's CSS strategy.

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

Line chart showing average CSS file size growth from 2015 to 2023.

لماذا هذا مهم لمشروعك

لقد تغير الويب. أصبح HTTP/2 و HTTP/3 الآن هو المعيار، وذاكرة التخزين المؤقت للمتصفح أكثر تطورًا، وقدرات الأجهزة تتفاوت بشكل كبير. لم يعد النموذج القديم "حزمة واحدة تحكم الكل" صالحًا. من خلال شحن المزيد من CSS بذكاء، يمكنك:

code, coding, programming, html, typing, work, business, hands, laptop, computer, technology, office, gray business, gray computer, gray office, gray technology, gray laptop, gray work, gray company, gray code, gray coding, gray programming, coding, coding, programming, programming, html, html, html, html, html

  • تقليل وقت منع التقديم مع الاستمرار في تقديم تجربة بصرية غنية.
  • تحسين دقة التخزين المؤقت، تغيير نمط زر لا ينبغي أن يبطل صلاحية ورقة الأنماط بأكملها.
  • تمكين تقسيم الكود والتحميل البطيء لـ CSS للمكونات التي تظهر لاحقًا.

تنفيذ الاستراتيجية

هل أنت مستعد لتجربتها بنفسك؟ اتبع هذه الخطوات:

  1. دقق في CSS الحالي لديك، استخدم أدوات مثل Lighthuse أو Webpack Bundle Analyzer لمعرفة ما هو حرج حقًا.
  2. قم بتضمين الحد الأدنى المطلق فقط للمحتوى المرئي أولاً (عادةً 10–15 كيلوبايت).
  3. قسم الباقي إلى فئات أساسية وكسولة بناءً على استخدام المكونات وأولوية الصفحة.
  4. قدم CSS الأساسي باستخدام rel="preload" أو خدعة الوسائط للحصول على تحميل غير مانع.
  5. فعّل HTTP/2 على خادمك واختبر مع تقييد في العالم الحقيقي.

وجد GitHub أنه حتى الزيادة الصغيرة في إجمالي CSS كانت مقبولة عند التقسيم المناسب – التنزيل المتوازي أخفى البايتات الإضافية، والتخزين المؤقت المحسن عوض عنها بأكثر من اللازم.

دور التخزين المؤقت وشبكات توصيل المحتوى

ميزة أخرى غالبًا ما يتم تجاهلها: الملفات المقسمة تتقدم في العمر بشكل مختلف. إعادة التعيين العالمية أو رموز نظام التصميم تتغير نادرًا ويمكن تخزينها مؤقتًا لأشهر. CSS المقسم حديثًا لميزة معينة يمكن إصداره بشكل مستقل. هذا يعني أن الزوار العائدين يحملون تقريبًا لا CSS في الزيارات اللاحقة، بينما لا يزال الزوار الجدد يحصلون على تجربة غير مانعة. إلى جانب شبكة توصيل المحتوى (CDN)، تصبح هذه الاستراتيجية أكثر قوة.

سد الفجوة نحو تطوير واجهة المستخدم

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

javascript, programmer, code, technology, coding, css, javascript, javascript, javascript, javascript, javascript

لا يقتصر دور divMagic على نسخ المظهر المرئي فحسب؛ بل يحافظ على تنظيم CSS الذي يمكن أن يرشدك إلى قرارات واعية بالأداء.

النظرة إلى المستقبل: مستقبل تقديم CSS

الخاتمة

إن شحن المزيد من CSS يمكن أن يعزز الأداء بالفعل عندما تتحرر من التفكير الأحادي. لقد أثبت فريق الهندسة في GitHub أنه من خلال تقسيم الأنماط إلى أجزاء غير محجوبة والسماح لـ HTTP/2 بالقيام بالعمل الشاق، يمكنك تحسين السرعة الفعلية والملموسة. مع استمرار تطور الويب، تُعاد كتابة القواعد القديمة. تقبّل المفارقة، وقس بلا كلل، ولا تخف من

ابدأ الإنشاء باستخدام DivMagic اليوم

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

Get DivMagic for 42% off

Limited time deal for 22:45