تعلم كيفية استخدام تلميحات الموارد مثل preload و prefetch و preconnect لتحسين أوقات تحميل الموقع وتعزيز تجربة المستخدم عالميًا.
تعزيز سرعة الموقع باستخدام تلميحات الموارد: Preload، وPrefetch، وPreconnect
في عالم اليوم الرقمي سريع الخطى، تعد سرعة الموقع أمرًا بالغ الأهمية. يتوقع المستخدمون أن يتم تحميل المواقع بسرعة وأن تستجيب على الفور. يمكن أن تؤدي أوقات التحميل البطيئة إلى تجربة مستخدم سيئة، وارتفاع معدلات الارتداد، وفي النهاية، خسارة الأعمال. تلميحات الموارد هي أدوات قوية يمكن أن تساعد المطورين على تحسين أوقات تحميل الموقع عن طريق إخبار المتصفح بالموارد المهمة وكيفية تحديد أولوياتها. يستكشف هذا المقال ثلاثة تلميحات موارد رئيسية: preload
، وprefetch
، وpreconnect
، ويقدم أمثلة عملية للتنفيذ.
فهم تلميحات الموارد
تلميحات الموارد هي توجيهات تعلم المتصفح بالموارد التي ستحتاجها صفحة الويب في المستقبل. فهي تسمح للمطورين بإبلاغ المتصفح بشكل استباقي بالموارد الحرجة، مما يمكنه من جلبها أو الاتصال بها في وقت أبكر مما كان سيفعل لولا ذلك. يمكن أن يقلل هذا بشكل كبير من أوقات التحميل ويحسن الأداء الملموس.
تلميحات الموارد الأساسية الثلاثة هي:
- Preload: لجلب الموارد الحرجة اللازمة للتحميل الأولي للصفحة.
- Prefetch: لجلب الموارد التي من المحتمل أن تكون مطلوبة للتنقلات أو التفاعلات المستقبلية.
- Preconnect: لإنشاء اتصالات مبكرة بخوادم الطرف الثالث المهمة.
Preload: إعطاء الأولوية للموارد الحرجة
ما هو Preload؟
إن Preload
هو جلب تعريفي يسمح لك بإخبار المتصفح بجلب مورد مطلوب للتنقل الحالي في أقرب وقت ممكن. هذا مفيد بشكل خاص للموارد التي يكتشفها المتصفح في وقت متأخر، مثل الصور، والخطوط، والسكربتات، أو أوراق الأنماط التي يتم تحميلها عبر CSS أو JavaScript. من خلال التحميل المسبق لهذه الموارد، يمكنك منعها من أن تصبح عائقة للتصيير وتحسين سرعة التحميل الملموسة لموقعك.
متى تستخدم Preload؟
استخدم preload
لـ:
- الخطوط: يمكن أن يمنع تحميل الخطوط المخصصة مبكرًا وميض النص غير المصمم (FOUT) أو وميض النص غير المرئي (FOIT).
- الصور: يضمن إعطاء الأولوية للصور في الجزء المرئي من الصفحة تحميلها بسرعة، مما يعزز تجربة المستخدم الأولية.
- السكربتات وأوراق الأنماط: يمنع تحميل ملفات CSS أو JavaScript الحرجة مبكرًا من إعاقة التصيير.
- الوحدات النمطية و Web Workers: يمكن أن يؤدي التحميل المسبق للوحدات النمطية أو web workers إلى تحسين استجابة تطبيقك.
كيفية تطبيق Preload
يمكنك تطبيق preload
باستخدام وسم <link>
في <head>
الخاص بمستند HTML:
<link rel="preload" href="/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
<link rel="preload" href="/styles/critical.css" as="style">
<link rel="preload" href="/scripts/app.js" as="script">
<link rel="preload" href="/images/hero.jpg" as="image">
شرح:
rel="preload"
: يحدد أن المتصفح يجب أن يقوم بالتحميل المسبق للمورد.href="/path/to/resource"
: عنوان URL للمورد المراد تحميله مسبقًا.as="type"
: يحدد نوع المورد الذي يتم تحميله مسبقًا (مثل font، style، script، image). السمة `as` إلزامية وحاسمة للمتصفح لتحديد أولوية المورد والتعامل معه بشكل صحيح. يضمن استخدام القيمة الصحيحة لـ `as` أن يطبق المتصفح سياسة أمان المحتوى (CSP) الصحيحة ويرسل ترويسةAccept
الصحيحة.type="mime/type"
: (اختياري ولكنه موصى به) يحدد نوع MIME للمورد. يساعد هذا المتصفح على تحديد تنسيق المورد الصحيح، خاصة بالنسبة للخطوط.crossorigin="anonymous"
: (مطلوب للخطوط المحملة من مصدر مختلف) يحدد وضع CORS للطلب. إذا كنت تقوم بتحميل الخطوط من شبكة توصيل محتوى (CDN)، فستحتاج على الأرجح إلى هذه السمة.
مثال: التحميل المسبق لخط
تخيل أن لديك خطًا مخصصًا يسمى 'OpenSans' مستخدمًا على موقعك. بدون التحميل المسبق، يكتشف المتصفح هذا الخط فقط بعد تحليل ملف CSS. يمكن أن يسبب هذا تأخيرًا في تصيير النص بالخط الصحيح. من خلال التحميل المسبق للخط، يمكنك إزالة هذا التأخير.
<link rel="preload" href="/fonts/OpenSans-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">
مثال: التحميل المسبق لملف CSS حرج
إذا كان موقعك يحتوي على ملف CSS حرج ضروري لتصيير العرض الأولي، فإن تحميله مسبقًا يمكن أن يحسن بشكل كبير الأداء الملموس.
<link rel="preload" href="/styles/critical.css" as="style">
أفضل الممارسات لـ Preload
- إعطاء الأولوية للموارد الحرجة: قم فقط بالتحميل المسبق للموارد الضرورية للتحميل الأولي للصفحة. يمكن أن يؤثر الإفراط في استخدام preload سلبًا على الأداء.
- استخدام السمة
as
الصحيحة: حدد دائمًا السمةas
الصحيحة لضمان تعامل المتصفح مع المورد بشكل صحيح. - تضمين السمة
type
: قم بتضمين السمةtype
لمساعدة المتصفح على تحديد تنسيق المورد الصحيح. - استخدام
crossorigin
للخطوط عبر المصادر: عند تحميل الخطوط من مصدر مختلف، تأكد من تضمين السمةcrossorigin
. - اختبار الأداء: اختبر دائمًا تأثير preload على الأداء للتأكد من أنه يحسن بالفعل أوقات التحميل. استخدم أدوات مثل Google PageSpeed Insights أو WebPageTest لقياس التأثير.
Prefetch: توقع الاحتياجات المستقبلية
ما هو Prefetch؟
إن Prefetch
هو تلميح مورد يخبر المتصفح بجلب الموارد التي من المحتمل أن تكون مطلوبة للتنقلات أو التفاعلات المستقبلية. على عكس preload
، الذي يركز على الموارد اللازمة للصفحة الحالية، يتوقع prefetch
الخطوة التالية للمستخدم. هذا مفيد بشكل خاص لتحسين سرعة تحميل الصفحات أو المكونات اللاحقة.
متى تستخدم Prefetch؟
استخدم prefetch
لـ:
- موارد الصفحة التالية: إذا كنت تعلم أن المستخدم من المحتمل أن ينتقل إلى صفحة معينة تالية، فقم بالجلب المسبق لمواردها.
- موارد تفاعلات المستخدم: إذا أدى تفاعل المستخدم إلى تحميل موارد معينة (مثل نافذة منبثقة، نموذج)، فقم بالجلب المسبق لتلك الموارد.
- الصور والأصول على الصفحات الأخرى: قم بالتحميل المسبق للصور أو الأصول المستخدمة في الصفحات الأخرى التي من المحتمل أن يزورها المستخدم.
كيفية تطبيق Prefetch
يمكنك تطبيق prefetch
باستخدام وسم <link>
في <head>
الخاص بمستند HTML:
<link rel="prefetch" href="/page2.html">
<link rel="prefetch" href="/images/product.jpg">
<link rel="prefetch" href="/scripts/modal.js">
شرح:
rel="prefetch"
: يحدد أن المتصفح يجب أن يقوم بالجلب المسبق للمورد.href="/path/to/resource"
: عنوان URL للمورد المراد جلبه مسبقًا.
مثال: الجلب المسبق لموارد الصفحة التالية
إذا كان موقعك يحتوي على تدفق مستخدم واضح، مثل نموذج متعدد الخطوات، يمكنك الجلب المسبق لموارد الخطوة التالية عندما يكون المستخدم في الخطوة الحالية.
<link rel="prefetch" href="/form/step2.html">
مثال: الجلب المسبق لموارد نافذة منبثقة
إذا كان موقعك يستخدم نافذة منبثقة تقوم بتحميل موارد إضافية عند فتحها، يمكنك الجلب المسبق لتلك الموارد لضمان تجربة مستخدم سلسة.
<link rel="prefetch" href="/scripts/modal.js">
<link rel="prefetch" href="/styles/modal.css">
أفضل الممارسات لـ Prefetch
- الاستخدام باعتدال: يجب استخدام prefetch باعتدال لأنه يمكن أن يستهلك النطاق الترددي والموارد حتى لو لم يكن المستخدم بحاجة إلى الموارد التي تم جلبها مسبقًا.
- إعطاء الأولوية للتنقلات المحتملة: قم بالجلب المسبق للموارد الخاصة بالصفحات أو التفاعلات التي من المرجح أن تحدث.
- مراعاة ظروف الشبكة: prefetch هو الأنسب للمستخدمين الذين لديهم اتصالات إنترنت مستقرة وسريعة. تجنب الجلب المسبق للموارد الكبيرة للمستخدمين على اتصالات بطيئة أو محدودة. يمكنك استخدام Network Information API لاكتشاف نوع اتصال المستخدم وتعديل الجلب المسبق وفقًا لذلك.
- مراقبة الأداء: راقب تأثير prefetch على أداء موقعك للتأكد من أنه يوفر فائدة صافية.
- استخدام الجلب المسبق الديناميكي: قم بتطبيق الجلب المسبق ديناميكيًا بناءً على سلوك المستخدم وبيانات التحليلات. على سبيل المثال، قم بالجلب المسبق لموارد الصفحات التي يزورها المستخدمون بشكل متكرر والذين هم حاليًا على الصفحة الحالية.
Preconnect: إنشاء اتصالات مبكرة
ما هو Preconnect؟
إن Preconnect
هو تلميح مورد يسمح لك بإنشاء اتصالات مبكرة بخوادم الطرف الثالث المهمة. يتضمن إنشاء اتصال عدة خطوات، بما في ذلك بحث DNS، ومصافحة TCP، وتفاوض TLS. يمكن أن تضيف هذه الخطوات زمن انتقال كبيرًا لتحميل الموارد من تلك الخوادم. يسمح لك Preconnect
ببدء هذه الخطوات في الخلفية، بحيث عندما يحتاج المتصفح إلى جلب مورد من الخادم، يكون الاتصال قد تم إنشاؤه بالفعل.
متى تستخدم Preconnect؟
استخدم preconnect
لـ:
- خوادم الطرف الثالث: الخوادم التي تستضيف الخطوط، وشبكات توصيل المحتوى (CDNs)، وواجهات برمجة التطبيقات (APIs)، أو أي موارد أخرى يعتمد عليها موقعك.
- الخوادم المستخدمة بشكل متكرر: الخوادم التي يتم الوصول إليها بشكل متكرر من قبل موقعك.
كيفية تطبيق Preconnect
يمكنك تطبيق preconnect
باستخدام وسم <link>
في <head>
الخاص بمستند HTML:
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.example.com">
شرح:
rel="preconnect"
: يحدد أن المتصفح يجب أن يتصل مسبقًا بالخادم.href="https://example.com"
: عنوان URL للخادم المراد الاتصال به مسبقًا.crossorigin
: (اختياري، ولكنه مطلوب للموارد المحملة بـ CORS) يحدد أن الاتصال يتطلب CORS.
مثال: الاتصال المسبق بـ Google Fonts
إذا كان موقعك يستخدم Google Fonts، فإن الاتصال المسبق بـ https://fonts.gstatic.com
يمكن أن يقلل بشكل كبير من زمن انتقال تحميل الخطوط.
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
تعتبر السمة `crossorigin` حاسمة هنا لأن Google Fonts تستخدم CORS لخدمة الخطوط.
مثال: الاتصال المسبق بشبكة توصيل المحتوى (CDN)
إذا كان موقعك يستخدم CDN لخدمة الأصول الثابتة، فإن الاتصال المسبق باسم مضيف CDN يمكن أن يقلل من زمن انتقال تحميل تلك الأصول.
<link rel="preconnect" href="https://cdn.example.com">
أفضل الممارسات لـ Preconnect
- الاستخدام بحكمة: يمكن أن يؤدي الاتصال المسبق بعدد كبير جدًا من الخوادم إلى تدهور الأداء، حيث أن المتصفح لديه موارد محدودة لإنشاء الاتصالات.
- إعطاء الأولوية للخوادم المهمة: اتصل مسبقًا بالخوادم الأكثر أهمية لأداء موقعك.
- النظر في dns-prefetch: بالنسبة للخوادم التي لا تحتاج إلى الاتصال بها مسبقًا بالكامل، ولكنك لا تزال ترغب في حل DNS مبكرًا، فكر في استخدام
<link rel="dns-prefetch" href="https://example.com">
. يقوم dns-prefetch فقط بإجراء بحث DNS، وهو أقل استهلاكًا للموارد من الاتصال المسبق الكامل. - اختبار الأداء: اختبر دائمًا تأثير preconnect على الأداء للتأكد من أنه يوفر فائدة صافية.
- الجمع مع تلميحات الموارد الأخرى: استخدم preconnect جنبًا إلى جنب مع preload و prefetch لتحقيق الأداء الأمثل. على سبيل المثال، اتصل مسبقًا بالخادم الذي يستضيف خطوطك ثم قم بالتحميل المسبق لملفات الخطوط.
الجمع بين تلميحات الموارد لتحقيق الأداء الأمثل
تكمن القوة الحقيقية لتلميحات الموارد في الجمع بينها بشكل استراتيجي. إليك مثال عملي:
تخيل موقعًا يستخدم خطًا مخصصًا مستضافًا على CDN ويقوم بتحميل ملف JavaScript حرج.
- الاتصال المسبق بـ CDN: أنشئ اتصالًا مبكرًا بـ CDN الذي يستضيف الخط وملف JavaScript.
<link rel="preconnect" href="https://cdn.example.com" crossorigin>
- التحميل المسبق للخط: أعطِ الأولوية لتحميل الخط لمنع FOUT.
<link rel="preload" href="https://cdn.example.com/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
- التحميل المسبق لملف JavaScript: أعطِ الأولوية لتحميل ملف JavaScript لضمان توفره عند الحاجة.
<link rel="preload" href="https://cdn.example.com/scripts/app.js" as="script">
أدوات لتحليل تلميحات الموارد
يمكن أن تساعدك العديد من الأدوات في تحليل فعالية تلميحات الموارد الخاصة بك:
- Google PageSpeed Insights: يقدم توصيات لتحسين أداء موقعك، بما في ذلك استخدام تلميحات الموارد.
- WebPageTest: يسمح لك باختبار أداء موقعك من مواقع وظروف شبكة مختلفة.
- Chrome DevTools: تعرض لوحة الشبكة (Network panel) في Chrome DevTools توقيت تحميل الموارد ويمكن أن تساعدك في تحديد فرص التحسين.
- Lighthouse: أداة آلية لتحسين جودة صفحات الويب. تحتوي على عمليات تدقيق للأداء، وإمكانية الوصول، وتطبيقات الويب التقدمية، وتحسين محركات البحث والمزيد.
المزالق الشائعة وكيفية تجنبها
- الإفراط في استخدام تلميحات الموارد: يمكن أن يؤثر استخدام عدد كبير جدًا من تلميحات الموارد سلبًا على الأداء. ركز على الموارد الأكثر أهمية.
- السمة
as
غير الصحيحة: يمكن أن يمنع استخدام السمةas
الخاطئة للتحميل المسبق من تحميل المورد بشكل صحيح. - تجاهل CORS: قد يؤدي عدم تضمين السمة
crossorigin
عند تحميل الموارد من مصدر مختلف إلى حدوث أخطاء في التحميل. - عدم اختبار الأداء: اختبر دائمًا تأثير تلميحات الموارد على الأداء للتأكد من أنها توفر فائدة صافية.
- المسارات غير الصحيحة: تحقق مرة أخرى وتأكد من صحة جميع مسارات الملفات وعناوين URL المحددة لتلميحات الموارد، وإلا فسيؤدي ذلك إلى حدوث خطأ.
مستقبل تلميحات الموارد
تتطور تلميحات الموارد باستمرار، مع إضافة ميزات وتحسينات جديدة إلى مواصفات المتصفح. يمكن أن يساعدك البقاء على اطلاع بآخر التطورات في تلميحات الموارد على تحسين أداء موقعك بشكل أكبر. على سبيل المثال، يعد modulepreload
تلميح مورد أحدث مصمم خصيصًا للتحميل المسبق لوحدات JavaScript النمطية. أيضًا، تسمح لك السمة `priority` لتلميحات الموارد بتحديد أولوية المورد بالنسبة للموارد الأخرى. لا يزال دعم المتصفح لهذه الميزات في تطور، لذا تحقق من التوافق قبل تنفيذها.
الخاتمة
تلميحات الموارد هي أدوات قوية لتحسين أوقات تحميل الموقع وتحسين تجربة المستخدم. من خلال الاستخدام الاستراتيجي لـ preload
، وprefetch
، وpreconnect
، يمكنك إبلاغ المتصفح بشكل استباقي بالموارد الحرجة، وتقليل زمن الانتقال، وتعزيز الأداء الملموس لموقعك. تذكر إعطاء الأولوية للموارد الحرجة، واستخدام تلميحات الموارد بحكمة، واختبار تأثير التغييرات على الأداء دائمًا. باتباع أفضل الممارسات الموضحة في هذا المقال، يمكنك تحسين أداء موقعك بشكل كبير وتقديم تجربة أفضل للمستخدمين في جميع أنحاء العالم.