أهمية ذلك بالنسبة إليك
تكون صور WebP أصغر حجمًا من نظيراتها بتنسيقَي JPEG وPNG، ويقل حجمها عادةً بنسبة تتراوح بين 25% و35%. ويؤدي ذلك إلى تقليل أحجام الصفحات و تحسين الأداء.
- تبيّن لفريق YouTube أنّ التبديل إلى استخدام الصور المصغّرة بتنسيق WebP أدى إلى تحميل الصفحات بشكلٍ أسرع بنسبة 10% مقارنةً بالتنسيقات الأخرى.
- لاحظ فريق Facebook عند استخدام WebP أنّ حجم ملفات JPEG ينخفض بنسبة تتراوح بين 25 و35%، وأنّ حجم ملفات PNG ينخفض بنسبة 80%.
يُعدّ WebP بديلاً ممتازًا للصور بتنسيقات JPEG وPNG وGIF. بالإضافة إلى ذلك، يقدّم WebP ضغطًا مع وبدون فقدان. في تقنية الضغط بدون فقدان البيانات، لا يتم فقدان أي بيانات. يعمل الضغط غير القابل للاسترداد على تقليل حجم الملف، ولكن على حساب احتمال تقليل جودة الصورة.
تحويل الصور إلى WebP
يستخدم المستخدمون بشكل عام إحدى الطريقتَين التاليتَين لتحويل صورهم
إلى WebP: أداة سطر الأوامر cwebp
أو مكوّن Imagemin WebP الإضافي (حزمة npm
).
بشكل عام، يُعدّ المكوّن الإضافي Imagemin WebP هو الخيار الأفضل إذا كان مشروعك يستخدم ملفّات برمجية
لإنشاء الصفحات أو أدوات إنشاء الصفحات (مثل Webpack أو Gulp)، في حين أنّ واجهة برمجة التطبيقات هي خيار جيد
للمشاريع الصغيرة أو إذا كنت بحاجة إلى تحويل الصور مرة واحدة فقط.
عند تحويل الصور إلى تنسيق WebP، يمكنك ضبط مجموعة كبيرة من إعدادات الضغط، ولكن بالنسبة إلى معظم المستخدمين، فإنّ الإعداد الوحيد الذي يحتاجون إلى الاهتمام به هو إعداد الجودة. يمكنك تحديد مستوى الجودة من 0 (أسوأ) إلى 100 (أفضل). ننصحك بتجربة هذه الإعدادات للعثور على المستوى المناسب الذي يوازن بين جودة الصورة وحجم الملف لتلبية احتياجاتك.
استخدام cwebp
تحويل ملف واحد باستخدام إعدادات الضغط التلقائية في cwebp
:
cwebp images/flower.jpg -o images/flower.webp
تحويل ملف واحد باستخدام مستوى جودة 50
:
cwebp -q 50 images/flower.jpg -o images/flower.webp
تحويل جميع الملفات في دليل:
for file in images/*; do cwebp "$file" -o "${file%.*}.webp"; done
استخدام Imagemin
يمكن استخدام المكوّن الإضافي Imagemin WebP بمفرده أو مع أداة الإنشاء المفضّلة لديك (Webpack/Gulp/Grunt/etc.). يتطلّب ذلك عادةً إضافة 10 أسطر من التعليمات البرمجية تقريبًا إلى نص برمجي للإنشاء أو ملف الإعدادات الخاص بأداة الإنشاء. في ما يلي أمثلة على كيفية إجراء ذلك باستخدام Webpack و Gulp و Grunt.
إذا كنت لا تستخدم إحدى أدوات الإنشاء هذه، يمكنك استخدام Imagemin بمفرده كأحد
النصوص البرمجية لـ Node. سيحوِّل هذا النص البرمجي الملفات في الدليل images
ويحفظها في الدليل compressed_images
.
const imagemin = require('imagemin');
const imageminWebp = require('imagemin-webp');
imagemin(['images/*'], {
destination: 'compressed_images',
plugins: [imageminWebp({quality: 50})]
}).then(() => {
console.log('Done!');
});
عرض صور WebP
إذا كان موقعك الإلكتروني متوافقًا فقط مع المتصفّحات المتوافقة مع WebP، يمكنك التوقف عن القراءة. بخلاف ذلك، قدِّم WebP للمتصفحات الأحدث وصورة احتياطية للمتصفحات الأقدم:
قبل:
<img src="flower.jpg" alt="">
بعد:
<picture>
<source type="image/webp" srcset="flower.webp">
<source type="image/jpeg" srcset="flower.jpg">
<img src="flower.jpg" alt="">
</picture>
تتفاعل علامات
<picture>
و
<source>
و
<img>
مع بعضها لتحقيق هذه النتيجة النهائية، بما في ذلك ترتيبها بالنسبة إلى بعضها.
<picture>
توفّر علامة <picture>
عنصرًا ملفّفًا لصفر أو أكثر من علامات <source>
وعلامة <img>
واحدة.
<source>
تحدّد العلامة <source>
مورد وسائط.
يستخدم المتصفّح المصدر الأول المدرَج بتنسيق متوافق. إذا كان المتصفّح لا يتيح أيًا من التنسيقات المدرَجة في علامات <source>
، سيستخدم علامة <img>
لتحميل الصورة المحدّدة.
<img>
تسمح علامة <img>
بتشغيل هذا الرمز على المتصفّحات
التي لا تتيح استخدام علامة <picture>
.
إذا كان المتصفّح لا يتيح استخدام علامة <picture>
، سيتم تجاهل العلامات التي لا يتوافق معها. وبالتالي، لا "يرى" سوى علامة
<img src="flower.jpg" alt="">
ويحمّل هذه الصورة.
قراءة عنوان HTTP Accept
إذا كان لديك خلفية تطبيق أو خادم ويب يتيح لك إعادة كتابة الطلبات، يمكنك قراءة قيمة رأس HTTP Accept
، الذي سيعلن عن تنسيقات الصور البديلة المتوافقة:
Accept: image/webp,image/svg+xml,image/*,*/*;q=0.8
إنّ قراءة عنوان الطلب هذا وإعادة كتابة الردّ استنادًا إلى محتواه تؤدي إلى تبسيط ترميز الصورة. يمكن أن تصبح علامة <picture>
طويلة جدًا مع العديد من المصادر. في ما يلي قاعدة mod_rewrite
في Apache يمكنها عرض بدائل WebP:
RewriteEngine On
RewriteCond %{HTTP:Accept} image/webp [NC]
RewriteCond %{HTTP:Content-Disposition} !attachment [NC]
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f [NC]
RewriteRule (.+)\.(png|jpe?g)$ $1.webp [T=image/webp,L]
إذا اتّبعت هذا المسار، عليك ضبط عنوان استجابة HTTP Vary
لضمان أن تفهم ذاكرات التخزين المؤقت أنّه قد يتم عرض الصورة بشكل مختلف استنادًا إلى عنوان Accept
:
<FilesMatch ".(jpe?g|png)$">
<IfModule mod_headers.c>
Header set Vary "Accept"
</IfModule>
</FilesMatch>
ستبحث قاعدة إعادة الكتابة السابقة عن إصدار WebP لأي صورة JPEG أو PNG مطلوبة. في حال العثور على بديل بتنسيق WebP، سيتم عرضه مع العنوان Content-Type
المناسب. سيتيح لك ذلك استخدام ترميز الصور المشابه لما يلي مع إتاحة WebP تلقائيًا:
<img src="flower-320w.jpg" srcset="flower-320w.jpg 320w, flower-640w.jpg 640w, flower-960w.jpg 960w">
التحقّق من استخدام WebP
يمكن استخدام Lighthouse للتحقّق من أنّه يتم عرض كل الصور على موقعك الإلكتروني باستخدام WebP. يمكنك إجراء تدقيق الأداء في Lighthouse (Lighthouse > الخيارات > الأداء) والبحث عن نتائج تدقيق عرض الصور بتنسيقات الجيل التالي . سيُدرج Lighthouse أي صور لا يتم عرضها بتنسيق WebP.