الصور عادةً أثقل عنصر في صفحات الويب — تشكّل غالبًا أكثر من نصف وزن الصفحة، وهي السبب الأشهر لبطء LCP ولقفزات CLS. تحسينها يقوم على خمس خطوات متراكبة: اختيار الصيغة الصحيحة (AVIF ثم WebP بدل JPEG/PNG، وSVG للأيقونات)، التحجيم لأبعاد العرض الفعلية بدل رفع صور ضخمة، الضغط بمستوى جودة معقول (75–82 يكفي غالبًا)، تقديم أحجام متعدّدة عبر srcset/sizes لكل شاشة، والتحميل الكسول lazy loading للصور خارج الشاشة مع عدم تكسيل صورة LCP. أضِف إليها تحديد width/height لتفادي القفز، والتوصيل عبر CDN يحوّل الصيغ تلقائيًا. النتيجة: وزن أقل بنسبة 50–80% وتحسّن مباشر في Core Web Vitals.
هذا الدليل مرجعي ويصلح لأي منصّة — موقع مخصّص، ووردبريس، أو متجر — لأن مبادئ تحسين الصور واحدة وإن اختلفت الأدوات. سنشرح كل خطوة بعمق مع جداول مقارنة وأكواد عملية، ثم نختم بسير عمل جاهز وقائمة تحقّق وأخطاء شائعة وأسئلة متكرّرة. لمن يريد الصورة الأكبر، اقرأ أيضًا الدليل الشامل لتسريع موقعك الذي يضع الصور في سياق الأداء الكامل.
لماذا الصور أثقل عنصر في الصفحة؟
في معظم المواقع، إذا فتحت أدوات المطوّر وفرزت طلبات الشبكة حسب الحجم، ستجد الصور تتصدّر القائمة بفارق كبير عن الـHTML والـCSS وحتى الجافاسكربت. السبب بسيط: الصورة الفوتوغرافية تحمل ملايين البكسلات، وكل بكسل لون. صورة بدقّة 2000×1333 بكسل بصيغة JPEG غير محسّنة قد تتجاوز 2 ميجابايت بسهولة، بينما صفحة HTML كاملة نادرًا ما تتعدّى بضع عشرات من الكيلوبايت.
أثر هذا الوزن لا يقف عند «الصفحة ثقيلة». ينعكس مباشرة على مؤشّرين من Core Web Vitals:
- LCP (Largest Contentful Paint): في أغلب الصفحات يكون أكبر عنصر مرئي هو صورة — صورة الهيرو، أو غلاف المقال، أو صورة المنتج الرئيسية. ما لم تُحمَّل هذه الصورة بسرعة، سيبقى مؤشّر LCP ضعيفًا مهما حسّنت بقية الصفحة. الهدف الرسمي أقل من 2.5 ثانية.
- CLS (Cumulative Layout Shift): الصورة بلا أبعاد محجوزة تدفع المحتوى للأسفل فجأة عند وصولها، فيقفز التخطيط ويرتفع مؤشّر CLS. الهدف أقل من 0.1.
والأخطر أن البطء له ثمن تجاري مباشر: كلّما تأخّر التحميل ارتفع احتمال مغادرة الزائر قبل أن يتفاعل أصلًا. هذه العلاقة بين زمن التحميل ومعدّل الارتداد موثّقة جيدًا.
الخبر الجيّد أن الصور هي أيضًا أكبر فرصة للتحسين: مكسب 70% من وزن الصورة أسهل بكثير من توفير 70% من الجافاسكربت، ولا يتطلّب لمس الكود غالبًا. هذا يجعل تحسين الصور أول ما يُبدأ به في أي مشروع تسريع. لفهم المؤشّرات بالتفصيل راجع فهم Core Web Vitals.
خط أنابيب الصورة: من الرفع إلى المتصفّح
قبل الغوص في التفاصيل، من المفيد رؤية رحلة الصورة كاملةً من اللحظة التي يلتقطها فيها المصوّر أو المصمّم حتى تظهر في متصفّح الزائر. كل خطوة في هذا الخط فرصة للتحسين أو للإهمال.
الخطوات بالترتيب:
- المصدر: ملف أصلي عالي الدقّة (PNG/JPEG/PSD) — قد يكون عدّة ميجابايت.
- التحجيم (Resize): تقليل الأبعاد إلى ما تحتاجه الصفحة فعلًا، لا أكثر.
- اختيار الصيغة (Encode): تحويل إلى AVIF/WebP مع JPEG كاحتياطي.
- الضغط (Compress): ضبط مستوى الجودة لموازنة الحجم والوضوح.
- توليد أحجام متعدّدة: نسخ بعروض مختلفة لـ
srcset. - التخزين والتوصيل (CDN): رفع على تخزين كائنات وتوصيل من أقرب نقطة.
- العرض في المتصفّح: مع
width/height،loading،decoding، وsizes.
أي موقع لا يطبّق هذا الخط يدفع الثمن مرّتين: مرّة في الوزن، ومرّة في التجربة. لنفصّل كل خطوة.
الخطوة الأولى: اختيار الصيغة الصحيحة
لا توجد «صيغة أفضل» مطلقة — لكل صيغة استخدامها الأمثل. القاعدة العامة: AVIF ثم WebP للصور الفوتوغرافية والرسومات المعقّدة، SVG للأيقونات والشعارات، وJPEG/PNG كاحتياطي عند الحاجة فقط.
مقارنة الصيغ الخمس الأساسية
| الصيغة | أفضل استخدام | الدعم | الحجم النسبي | الشفافية | الرسوم المتحرّكة |
|---|---|---|---|---|---|
| JPEG | صور فوتوغرافية (احتياطي) | عالمي (100%) | مرجع (100%) | لا | لا |
| PNG | شفافية، نصوص حادّة، لقطات شاشة | عالمي (100%) | كبير جدًا للصور | نعم | لا |
| WebP | بديل عام لـJPEG/PNG | ممتاز (~97%) | ~25–35% أصغر من JPEG | نعم | نعم |
| AVIF | أفضل ضغط للصور الحديثة | جيّد (~93%) | ~50% أصغر من JPEG | نعم | نعم |
| SVG | أيقونات، شعارات، رسوم متّجهة | عالمي (100%) | ضئيل جدًا | نعم | نعم (CSS/SMIL) |
متى تختار كل صيغة؟
| السيناريو | الصيغة المثلى | الاحتياطي |
|---|---|---|
| صورة هيرو فوتوغرافية | AVIF | WebP ← JPEG |
| غلاف مقال / صورة مدوّنة | AVIF | WebP ← JPEG |
| صورة منتج (تفاصيل دقيقة) | AVIF بجودة أعلى | WebP ← JPEG |
| شعار، أيقونة، رسم بياني متّجه | SVG | PNG |
| لقطة شاشة بنصوص حادّة | WebP (lossless) | PNG |
| رسم يحتاج شفافية حادّة | WebP/AVIF | PNG |
| صورة GIF متحرّكة قديمة | WebP أو فيديو MP4/WebM | — |
نصيحتان مهمّتان: أولًا، GIF المتحرّك سيّئ جدًا في الوزن — استبدله بفيديو <video> بصيغة WebM/MP4 أو بـAVIF/WebP متحرّك، فالتوفير يصل إلى 90%. ثانيًا، لا تستخدم PNG لصورة فوتوغرافية؛ PNG مصمّم للضغط بلا فقد، فيُنتج ملفًا ضخمًا للصور ذات التدرّجات اللونية الكثيرة. PNG ممتاز للنصوص الحادّة والشفافية فقط.
أما آلية التقديم، فإن أبسط طريقة موثوقة هي عنصر <picture> الذي يقدّم AVIF أولًا، ثم WebP، ثم JPEG لمن لا يدعم الحديث:
<picture>
<source srcset="/images/hero.avif" type="image/avif" />
<source srcset="/images/hero.webp" type="image/webp" />
<img src="/images/hero.jpg" alt="لوحة تحكّم الاستضافة" width="1200" height="630" />
</picture>
المتصفّح يختار أول صيغة يدعمها من الأعلى للأسفل، فيحصل مستخدمو المتصفّحات الحديثة على AVIF الأخفّ، ويبقى الجميع قادرًا على رؤية الصورة. إن كنت على ووردبريس أو CDN يحوّل الصيغ تلقائيًا، فغالبًا لن تكتب هذا يدويًا — لكن فهم الآلية يساعدك على التشخيص.
الخطوة الثانية: الضغط — بفقد مقابل بلا فقد
الضغط نوعان جوهريًا، والخلط بينهما من أكثر الأخطاء شيوعًا:
| النوع | الفكرة | الجودة | الحجم | الاستخدام الأمثل |
|---|---|---|---|---|
| بلا فقد (Lossless) | يُزيل التكرار دون حذف أي بكسل | مطابقة 100% للأصل | تقليص متوسّط | لقطات شاشة، نصوص حادّة، شعارات |
| بفقد (Lossy) | يحذف تفاصيل لا تكاد العين تميّزها | فقد بصري طفيف يُضبط بمستوى الجودة | تقليص كبير جدًا | الصور الفوتوغرافية |
للصور الفوتوغرافية، الضغط بفقد هو الخيار الصحيح دائمًا تقريبًا: العين البشرية لا تلاحظ الفرق بين الأصل وبين نسخة مضغوطة بجودة 80، بينما الحجم ينخفض إلى الثلث أو أقل. السؤال الحقيقي هو: ما مستوى الجودة المناسب؟
الجودة مقابل الحجم — أين تضبط المؤشّر؟
| مستوى الجودة | الإدراك البصري | الحجم النسبي | التوصية |
|---|---|---|---|
| 95–100 | لا فرق ملموس، إسراف | كبير | تجنّبه — هدر بلا فائدة |
| 82–90 | ممتاز، آمن للمنتجات الدقيقة | متوسّط-كبير | لصور المنتجات وما يُكبّر |
| 75–82 | ممتاز للعين، توازن مثالي | متوسّط | الافتراضي الموصى به |
| 60–74 | جيّد، يظهر بعض الفقد عند التدقيق | صغير | للصور الثانوية والمصغّرات |
| < 55 | تشوّهات (artefacts) واضحة | صغير جدًا | تجنّبه للصور المهمّة |
القاعدة الذهبية: ابدأ من جودة 80 وانزل تدريجيًا حتى ترى أول فرق بصري، ثم اصعد درجة واحدة. هذا «عتبة الجودة البصرية» وتختلف قليلًا من صورة لأخرى — الصور ذات المساحات اللونية المسطّحة (سماء، جدار) تتحمّل ضغطًا أعلى من الصور المزدحمة بالتفاصيل (أوراق شجر، نسيج).
أوامر سطر الأوامر تعطيك تحكّمًا دقيقًا. لتحويل صورة إلى WebP بجودة 80 عبر أداة cwebp:
# WebP بفقد بجودة 80
cwebp -q 80 input.jpg -o output.webp
# WebP بلا فقد (للقطات الشاشة والنصوص الحادّة)
cwebp -lossless input.png -o output.webp
ولتوليد AVIF عبر avifenc (من حزمة libavif):
# AVIF بفقد: --min/--max أقل = جودة أعلى؛ والسرعة 6 توازن جيّد
avifenc --min 24 --max 30 --speed 6 input.jpg output.avif
الخطوة الثالثة: التحجيم والصور المتجاوبة (srcset)
أكبر خطأ منفرد في الصور هو رفع صورة بأبعاد ضخمة وعرضها بحجم صغير. صورة بعرض 4000 بكسل تُعرض داخل حاوية عرضها 400 بكسل تهدر 90% من بياناتها، ويُجبر المتصفّح على تنزيلها كاملةً ثم تصغيرها. الحلّ شقّان: حجّم لما تحتاجه، وقدّم أحجامًا متعدّدة لتختلف الشاشات.
أبعاد العرض الشائعة
| موضع الصورة | عرض العرض التقريبي | عروض الـsrcset المقترحة |
|---|---|---|
| صورة هيرو عريضة (full-width) | حتى 1920px | 640, 960, 1280, 1920 |
| غلاف مقال | حتى 1200px | 480, 768, 1024, 1200 |
| صورة داخل المتن | حتى 760px | 380, 560, 760 |
| بطاقة في شبكة (grid card) | ~360px | 360, 540, 720 |
| مصغّرة (thumbnail) | ~120px | 120, 240 |
| أفاتار | ~48px | 48, 96 |
لاحظ أن كل صفّ يحتوي على نسخة بضعف العرض (مثل 360 و720): هذا لتغطية شاشات الكثافة العالية (DPR ≥ 2، مثل شاشات الريتينا) التي تحتاج بكسلات فعلية أكثر لكل بكسل CSS.
كيف يعمل srcset وsizes معًا؟
السمة srcset تخبر المتصفّح بالنسخ المتاحة وعرض كلٍّ بالبكسل (بواصف w)، والسمة sizes تخبره بالعرض الذي ستُعرض به الصورة فعلًا عند كل نقطة كسر، فيختار المتصفّح أنسب نسخة بنفسه حسب الشاشة والكثافة:
<img
src="/images/cover-768.jpg"
srcset="
/images/cover-480.jpg 480w,
/images/cover-768.jpg 768w,
/images/cover-1024.jpg 1024w,
/images/cover-1200.jpg 1200w"
sizes="(max-width: 600px) 100vw, (max-width: 1024px) 80vw, 1200px"
width="1200" height="630"
alt="مقارنة خطط الاستضافة"
decoding="async"
/>
اقرأ sizes هكذا: «على الشاشات حتى 600 بكسل اعرض الصورة بعرض كامل العرض (100vw)، وحتى 1024 بكسل بعرض 80% من العرض، وغير ذلك بعرض 1200 بكسل». بهذه المعلومة يستطيع المتصفّح حساب أصغر نسخة كافية لكل جهاز. بدون sizes دقيقة، تفقد فائدة srcset لأن المتصفّح يفترض أن الصورة بعرض كامل الشاشة ويختار نسخة أكبر من اللازم.
نقطة جوهرية: لا تكتب كل هذا يدويًا لكل صورة. على ووردبريس يُولّد النظام
srcset/sizesتلقائيًا من «أحجام الصور» المسجّلة، وفي Next.js يتولّىnext/imageالتوليد كاملًا. مهمّتك أن تتأكّد أن النسخ المتعدّدة تُولَّد وأنsizesيعكس تخطيطك الحقيقي.
الخطوة الرابعة: التحميل الكسول (lazy loading) دون أذية LCP
التحميل الكسول يؤجّل تنزيل الصور خارج إطار الشاشة حتى يقترب المستخدم منها بالتمرير، فيُسرّع التحميل الأولي ويوفّر بيانات على صور قد لا يصل إليها الزائر أصلًا. تفعيله أصبح بسيطًا عبر سمة أصلية في المتصفّح:
<!-- صورة أسفل الصفحة: كسّلها -->
<img src="/images/section-3.webp" loading="lazy" decoding="async"
width="800" height="450" alt="لوحة الإحصاءات" />
لكن هنا أخطر فخّ في الموضوع كلّه:
لا تكسّل أبدًا صورة LCP — أي الصورة الأولى المرئية فوق الطيّة (above the fold)، كصورة الهيرو أو غلاف المقال. تكسيلها يؤخّر تنزيلها فيتدهور مؤشّر LCP بشدّة، وهو عكس ما تريد.
القاعدة العملية:
| موقع الصورة | loading | fetchpriority | السبب |
|---|---|---|---|
| صورة LCP (هيرو/غلاف، فوق الطيّة) | eager (الافتراضي) | high | حمّلها فورًا وبأولوية عالية |
| صور فوق الطيّة غير LCP | eager | — | مرئية مباشرة |
| كل الصور أسفل الطيّة | lazy | — | أجّلها حتى الاقتراب |
لتسريع صورة LCP تحديدًا، أضِف fetchpriority="high" لترفع أولويتها في طابور التنزيل:
<!-- صورة الهيرو / LCP: عجّلها -->
<img src="/images/hero.avif" fetchpriority="high" decoding="async"
width="1200" height="630" alt="استضافة سريعة" />
أمّا سمة decoding="async" فتسمح للمتصفّح بفكّ ترميز الصورة دون حجب الخيط الرئيسي، وهي آمنة لمعظم الصور وتساعد على الاستجابية.
نصيحة خبير: على ووردبريس، النواة تضيف loading="lazy" تلقائيًا لكل الصور — بما فيها أحيانًا صورة LCP. تأكّد أن قالبك أو إضافة الأداء يستثني أول صورة (أو يضع لها fetchpriority="high"). كثير من المواقع البطيئة سببها أن صورة الهيرو مُكسَّلة بالخطأ.
جاهز لإطلاق موقعك على استضافة سريعة؟
خطط استضافة wpressly على أقراص NVMe مع SSL مجاني ودعم عربي — اختر الخطة المناسبة لحجمك وانطلق اليوم.
اكتشف خطط الاستضافةالخطوة الخامسة: تحديد width وheight لتفادي CLS
عندما لا يعرف المتصفّح أبعاد الصورة مسبقًا، يحجز لها مساحة صفرية ثم يدفع كل ما تحتها للأسفل فجأة حين تصل — وهذا هو سبب قفز التخطيط (CLS) الأشهر. الحلّ بسيط جدًا وغالبًا ما يُهمَل: اكتب width وheight الحقيقيين (بالبكسل) على كل صورة، حتى لو كانت متجاوبة.
<!-- نسبة الأبعاد محفوظة: المتصفّح يحجز المساحة قبل التنزيل -->
<img src="/images/chart.webp" width="800" height="450"
style="height:auto" alt="نمو الأداء" loading="lazy" />
السرّ أن المتصفّح الحديث يستخدم width وheight لحساب نسبة الأبعاد (aspect ratio)، فيحجز الصندوق بالحجم الصحيح قبل وصول الصورة. مع style="height:auto" (أو قاعدة CSS مماثلة)، تبقى الصورة متجاوبة لكن نسبتها محفوظة فلا قفز. هذه أرخص خطوة تحسين على الإطلاق: سطر واحد لكل صورة يُسقط مؤشّر CLS إلى الصفر تقريبًا.
| الحالة | النتيجة على CLS |
|---|---|
صورة بلا width/height | قفز شديد عند الوصول — CLS مرتفع |
width/height + height:auto | المساحة محجوزة — CLS ≈ 0 |
حاوية بنسبة أبعاد CSS (aspect-ratio) | بديل ممتاز يحجز المساحة كذلك |
الخطوة السادسة: التوصيل عبر CDN وتحويل الصيغ تلقائيًا
بعد ضغط الصور وتحجيمها، يبقى عامل المسافة: زائر بعيد جغرافيًا عن خادمك ينتظر أطول لتصل الصورة. هنا يأتي دور شبكة توصيل المحتوى (CDN)، التي تخزّن نسخًا من صورك على نقاط حضور موزّعة حول العالم وتخدم كل زائر من أقرب نقطة إليه. هذا يقلّص زمن وصول الصورة (وبالتالي LCP) بشكل ملموس للجمهور الدولي.
الأفضل من ذلك أن CDN الصور الحديثة تفعل أكثر من التوصيل: تحوّل الصيغة وتحجّم وتضغط عند الطلب حسب متصفّح الزائر وحجم شاشته. ترفع صورة أصلية واحدة، وتطلبها برابط يحمل معاملات، فتعيد لك الشبكة النسخة المثلى:
# مثال: رابط CDN صور يحجّم ويحوّل ويضبط الجودة عند الطلب
https://cdn.example.com/hero.jpg?width=768&format=auto&quality=80
format=auto تعني: «أعطِ هذا الزائر AVIF إن كان متصفّحه يدعمه، وإلا WebP، وإلا JPEG» — تلقائيًا دون أن تولّد النسخ بنفسك. هذا يبسّط سير العمل كثيرًا. لفهم أعمق لآلية الـCDN وفوائده الأمنية والأدائية راجع ما هو CDN ولماذا تحتاجه.
إن كنت تخدم WebP يدويًا من خادمك دون CDN، يمكنك إعداد Nginx ليقدّم نسخة WebP تلقائيًا للمتصفّحات الداعمة بناءً على ترويسة Accept:
# يخدم x.webp بدل x.jpg إن كان المتصفّح يدعم webp ووُجدت النسخة
location ~* \.(jpe?g|png)$ {
add_header Vary Accept;
try_files $uri$webp_suffix $uri =404;
}
map $http_accept $webp_suffix {
default "";
"~*image/webp" ".webp";
}
الأدوات: من اليدوي إلى الأونلاين إلى الإضافات
لا تحتاج كل الأدوات؛ تحتاج الأداة المناسبة لسياقك. هذه خريطة عملية:
أدوات الضغط والتحويل
| الأداة | النوع | المميّزات | الأنسب لـ |
|---|---|---|---|
| Squoosh | أونلاين (مجاني) | مقارنة قبل/بعد حيّة، AVIF/WebP، تحكّم دقيق | صور مفردة، تعلّم العتبات |
| TinyPNG | أونلاين (مجاني/مدفوع) | ضغط ذكي PNG/JPEG/WebP، API | دفعات سريعة |
| cwebp / avifenc | سطر أوامر | تحكّم كامل، أتمتة، دفعات ضخمة | المطوّرون والـCI |
| ShortPixel | إضافة/أونلاin/API | تحويل تلقائي AVIF/WebP، CDN اختياري | ووردبريس والمواقع الحيّة |
| Imagify | إضافة/أونلاin/API | ضغط تلقائي بمستويات، WebP/AVIF | ووردبريس |
| Sharp | مكتبة Node.js | أسرع معالجة برمجية، توليد srcset | البناء وخطوط الأنابيب |
إضافات ووردبريس للصور
| الإضافة | الوظيفة الأساسية | ملاحظة |
|---|---|---|
| ShortPixel | ضغط + تحويل WebP/AVIF + CDN | شامل وسهل |
| Imagify | ضغط بمستويات + WebP/AVIF | من صنّاع WP Rocket |
| EWWW Image Optimizer | ضغط محلي/سحابي + WebP | يعمل بلا اشتراك للأساسيات |
| Smush | ضغط + كسل + تحجيم | واجهة بسيطة |
| Converter for Media | تحويل WebP/AVIF وخدمتها | متخصّص في التحويل |
نصيحة: لا تجمع أكثر من إضافة ضغط واحدة — قد تتعارض وتضغط الصورة مرّتين فتفسدها. اختر واحدة واضبطها جيدًا. ولمزيد عن تسريع ووردبريس بالكامل راجع تسريع موقع ووردبريس.
سير عمل عملي جاهز
للموقع المخصّص (يدوي أو بناء)
- ابدأ من الأصل الأعلى دقّة الذي ستحتاجه (مثلًا 1920px للهيرو).
- حجّم لكل عرض في خطّة الـ
srcset(مثلًا 640/960/1280/1920). - حوّل كل عرض إلى AVIF وWebP (واحتفظ بـJPEG احتياطيًا).
- اضغط بجودة 80 (انزل للثانوية، اصعد للمنتجات).
- اعرض عبر
<picture>أوsrcset/sizesمعwidth/height. - كسّل ما هو أسفل الطيّة، وعجّل صورة LCP بـ
fetchpriority="high". - وصّل عبر CDN صور بـ
format=auto.
سكربت Node بسيط بمكتبة Sharp يولّد كل النسخ دفعةً:
import sharp from "sharp";
const widths = [640, 960, 1280, 1920];
for (const w of widths) {
await sharp("hero.jpg").resize(w)
.avif({ quality: 50 }).toFile(`hero-${w}.avif`);
await sharp("hero.jpg").resize(w)
.webp({ quality: 80 }).toFile(`hero-${w}.webp`);
}
لموقع ووردبريس
- ثبّت إضافة ضغط/تحويل واحدة (ShortPixel أو Imagify) وفعّل WebP/AVIF.
- فعّل «إعادة تحجيم الصور الكبيرة عند الرفع» (ووردبريس يفعلها افتراضيًا فوق 2560px — يمكن خفضها).
- اضغط مكتبة الوسائط القديمة دفعةً واحدة (Bulk).
- تأكّد أن القالب يخرج
width/heightوsrcset(القوالب الحديثة تفعل). - استثنِ صورة الهيرو/الغلاف من التكسيل، وأعطها أولوية عالية.
- فعّل CDN (عبر الإضافة أو مزوّدك).
القياس: كيف تعرف أنّك نجحت؟
التحسين بلا قياس تخمين. استخدم هذه الأدوات:
| الأداة | تقيس | متى تستخدمها |
|---|---|---|
| PageSpeed Insights | LCP/CLS ميدانيًا + مختبريًا + توصيات الصور | فحص شامل وتوصيات «صيغ الجيل القادم» |
| Lighthouse (DevTools) | تدقيق محلي مفصّل للصور | أثناء التطوير والتشخيص |
| DevTools ← Network | حجم كل صورة فعليًا وزمنها | إيجاد أثقل الصور بسرعة |
| WebPageTest | شلال تحميل دقيق + أولويات | تشخيص متقدّم لـLCP |
أسرع فحص يدوي: افتح DevTools ← لسان Network ← صفّ حسب Size نزولًا ← أعِد تحميل الصفحة. أثقل الصفوف هي أهدافك الأولى. وفي Lighthouse انتبه لتوصيتين متكرّرتين: «قدّم الصور بصيغ الجيل القادم» (أي حوّل لـWebP/AVIF) و**«حجّم الصور بشكل صحيح»** (أي أنت تخدم أبعادًا أكبر من المعروضة).
الأخطاء الشائعة وكيف تتجنّبها
| الخطأ | الأثر | التصحيح |
|---|---|---|
| رفع صور بأبعاد ضخمة وعرضها صغيرة | هدر هائل في الوزن وLCP بطيء | حجّم للأبعاد المعروضة + srcset |
| استخدام PNG لصور فوتوغرافية | ملفات أضخم بـ5–10 أضعاف | استخدم JPEG/WebP/AVIF |
| تكسيل صورة LCP (الهيرو/الغلاف) | تدهور حادّ في LCP | eager + fetchpriority="high" للأولى |
غياب width/height | قفز تخطيط وCLS مرتفع | أضِفهما + height:auto |
| جودة 95–100 بلا داعٍ | حجم مضاعف بلا فائدة بصرية | اضبط على 75–82 |
| GIF متحرّك ثقيل | عشرات الميجابايت | استبدله بـ<video> أو WebP/AVIF |
إهمال نص alt | ضرر للوصولية وSEO الصور | اكتب alt وصفيًا لكل صورة محتوى |
| ضغط مزدوج بأكثر من إضافة | تشوّه وفساد الصور | إضافة ضغط واحدة فقط |
| نسيان CDN للجمهور الدولي | LCP بطيء للبعيدين | CDN صور بـformat=auto |
نقطة الوصولية تستحقّ تأكيدًا: نصّ alt ليس رفاهية. هو ما يقرؤه قارئ الشاشة لمستخدم كفيف، وما يعتمده محرّك البحث لفهم الصورة، وما يظهر إن فشل تحميل الصورة. اكتبه وصفيًا دقيقًا لصور المحتوى، واتركه فارغًا (alt="") للصور الزخرفية البحتة فقط حتى تتجاهلها قارئات الشاشة.
قائمة تحقّق سريعة لتحسين الصور
| البند | تمّ؟ |
|---|---|
| كل الصور الفوتوغرافية بصيغة AVIF/WebP مع احتياطي | ☐ |
| الأيقونات والشعارات بصيغة SVG | ☐ |
| لا صورة أكبر من أبعاد عرضها الفعلية | ☐ |
srcset + sizes لكل صورة متجاوبة | ☐ |
| الجودة مضبوطة على 75–82 (لا 95+) | ☐ |
width + height + height:auto على كل صورة | ☐ |
الصور أسفل الطيّة بـloading="lazy" | ☐ |
صورة LCP غير مُكسَّلة + fetchpriority="high" | ☐ |
decoding="async" على الصور | ☐ |
التوصيل عبر CDN صور بـformat=auto | ☐ |
نص alt وصفي لكل صورة محتوى | ☐ |
| قياس بعد/قبل عبر PageSpeed/Lighthouse | ☐ |
جاهز لإطلاق موقعك على استضافة سريعة؟
خطط استضافة wpressly على أقراص NVMe مع SSL مجاني ودعم عربي — اختر الخطة المناسبة لحجمك وانطلق اليوم.
اكتشف خطط الاستضافةاستكشاف الأخطاء وإصلاحها (Troubleshooting)
| العرَض | السبب المحتمل | الحلّ |
|---|---|---|
| LCP بطيء رغم ضغط الصور | صورة LCP مُكسَّلة أو منخفضة الأولوية | أزِل lazy وأضِف fetchpriority="high" |
| CLS مرتفع عند تحميل الصور | غياب width/height | أضِف الأبعاد + height:auto |
| WebP/AVIF لا يظهر لبعض الزوّار | لا يوجد احتياطي أو ترويسة Vary ناقصة | استخدم <picture> أو أضِف Vary: Accept |
| الصور تبدو مشوّهة (artefacts) | جودة ضغط منخفضة جدًا | ارفع الجودة فوق 70 |
| الصور لا تزال ثقيلة بعد الإضافة | الأبعاد الأصلية ضخمة | فعّل إعادة التحجيم عند الرفع |
srcset لا يوفّر شيئًا | sizes غير دقيقة أو غائبة | اضبط sizes ليطابق التخطيط الفعلي |
| صورة لا تُخدَم من الـCDN | الكاش لم يُسخَّن أو الرابط أصلي | تحقّق من ترويسة cf-cache-status/x-cache |
| ووردبريس يخدم النسخة الأصلية الكبيرة | القالب لا يدعم srcset أو حُذفت الأحجام | جدّد توليد الأحجام (Regenerate Thumbnails) |
الأسئلة الشائعة
ما الفرق بين WebP وAVIF وأيّهما أختار؟
كلاهما صيغة حديثة بضغط ممتاز ودعم للشفافية والحركة. AVIF يعطي حجمًا أصغر (حتى 50% أقل من JPEG) لكن دعمه أقلّ قليلًا وترميزه أبطأ. WebP أوسع دعمًا (~97% من المتصفّحات) وأسرع ترميزًا وأخفّ من JPEG بـ25–35%. الأمثل: قدّم AVIF أولًا ثم WebP ثم JPEG عبر <picture> أو CDN بـformat=auto، فيحصل كل زائر على الأفضل المتاح له.
هل أستغني عن JPEG وPNG تمامًا؟ ليس بعد. أبقِ JPEG احتياطيًا لنسبة ضئيلة من المتصفّحات القديمة، وأبقِ PNG للقطات الشاشة والنصوص الحادّة والشفافية الحرجة حيث الضغط بلا فقد مطلوب. لكن لا تستخدمهما كصيغة افتراضية للصور الفوتوغرافية — هناك AVIF/WebP أخفّ.
ما مستوى الجودة المثالي للضغط؟ للصور الفوتوغرافية، 75 إلى 82 توازن مثالي بين الوضوح والحجم لا يكاد يميّز عنه أحد بالعين. ارفعه إلى 85–90 لصور المنتجات التي تُكبَّر، واخفضه إلى 60–70 للصور الثانوية والمصغّرات. تجنّب 95+ فهو هدر، وتجنّب أقل من 55 فهو يُظهر تشوّهات.
ما هو التحميل الكسول ومتى لا أستخدمه؟
التحميل الكسول (loading="lazy") يؤجّل تنزيل الصور خارج الشاشة حتى يقترب منها المستخدم بالتمرير، فيسرّع التحميل الأولي. لا تستخدمه أبدًا لصورة LCP (الهيرو/الغلاف فوق الطيّة)؛ تكسيلها يؤخّر ظهور أكبر عنصر فيتدهور LCP. كسّل ما تحت الطيّة فقط.
كيف تتسبّب الصور في رفع CLS وكيف أمنع ذلك؟
حين تصل صورة بلا أبعاد محجوزة، تدفع المحتوى تحتها فجأة فيقفز التخطيط (CLS). امنع ذلك بكتابة width وheight الحقيقيين على كل صورة مع style="height:auto"؛ فيحجز المتصفّح المساحة الصحيحة بنسبة الأبعاد قبل وصول الصورة. بديل آخر: حدّد aspect-ratio للحاوية في CSS.
ما حجم الصورة المناسب للويب؟ لا رقم واحد، بل يعتمد على موضع العرض: غلاف مقال محسّن غالبًا 50–150 كيلوبايت، صورة متن أصغر، صورة هيرو محسّنة قد تصل 150–250 كيلوبايت. القاعدة: حجّم لأبعاد العرض، حوّل لـAVIF/WebP، واضبط الجودة على 80 — وستصل لهذه الأرقام تلقائيًا. أي صورة محتوى تتجاوز نصف ميجابايت غالبًا غير محسّنة.
هل يحسّن next/image الصور تلقائيًا؟
نعم. مكوّن next/image يولّد srcset/sizes، يحوّل إلى AVIF/WebP، يضيف width/height لمنع CLS، ويكسّل ما تحت الطيّة تلقائيًا. مهمّتك أن تمرّر الأبعاد الصحيحة، وأن تضع priority على صورة LCP لتعجيلها (يعادل fetchpriority="high" وإلغاء التكسيل).
ماذا أفعل بالصور المتحرّكة GIF؟
استبدلها. GIF صيغة قديمة ثقيلة جدًا (عشرات الميجابايت أحيانًا). حوّلها إلى فيديو <video> بصيغة WebM/MP4 (مع autoplay muted loop playsinline) أو إلى AVIF/WebP متحرّك؛ التوفير يصل إلى 90% من الوزن مع جودة أفضل.
هل يكفي استخدام CDN دون ضغط الصور؟ لا. الـCDN يقرّب الصورة جغرافيًا لكنه لا يصلح صورة بحجم 3 ميجابايت — ستبقى ثقيلة، فقط أقرب. الترتيب الصحيح: اضغط وحجّم أولًا، ثم وصّل عبر CDN. الأفضل CDN صور يحوّل ويحجّم عند الطلب فيجمع الأمرين. راجع ما هو CDN للتفصيل.
كيف أقيس تحسّن الصور فعليًا؟ شغّل PageSpeed Insights وراقب LCP وتوصيات «صيغ الجيل القادم» و«تحجيم الصور»، أو افتح DevTools ← Network وصفّ حسب الحجم لترى أثقل الصور قبل/بعد. قارن LCP وCLS قبل التحسين وبعده — التحسّن يجب أن يكون ملموسًا في الرقمين.
هل تحسين الصور يفيد SEO؟
نعم، بطريقتين: مباشرةً عبر تحسين Core Web Vitals (إشارة ترتيب في تجربة الصفحة)، وغير مباشرة عبر نص alt الوصفي وأسماء الملفات الدالّة التي تساعد محرّك البحث على فهم الصورة وأرشفتها في بحث الصور. الموقع الأسرع أيضًا يُزحف أعمق ويحتفظ بالزوّار أطول.
الخلاصة
الصور أثقل عنصر في معظم الصفحات، وهي بالتالي أكبر فرصة لتسريعها. الوصفة واضحة ومتراكبة: صيغة حديثة (AVIF ثم WebP)، تحجيم للأبعاد الفعلية، ضغط بجودة 80، أحجام متعدّدة عبر srcset/sizes، تحميل كسول لما تحت الطيّة مع عدم تكسيل صورة LCP، أبعاد محجوزة بـwidth/height لمنع CLS، وتوصيل عبر CDN بتحويل تلقائي. طبّق هذه الخطوات وستجد وزن الصفحة ينخفض 50–80% وCore Web Vitals يتحسّن مباشرةً.
والأهمّ أن أساسًا سريعًا من الاستضافة يضاعف عائد كل هذا الجهد — صور خفيفة على خادم بطيء تبقى دون المطلوب. ابدأ بتحسين صورك اليوم، وضعها على استضافة سريعة، وقِس النتيجة.
جاهز لإطلاق موقعك على استضافة سريعة؟
خطط استضافة wpressly على أقراص NVMe مع SSL مجاني ودعم عربي — اختر الخطة المناسبة لحجمك وانطلق اليوم.
اكتشف خطط الاستضافة