A WebP egy olyan fájlformátum képek számára, amely veszteségmentes és veszteséges tömörítést biztosít. Ha a WordPress-t használja, néhány alapvető módosítással minden képet könnyedén WebP-ben szolgáltathat ki.
A legtöbb böngésző támogatja a WebP-t
- A Caniuse adatai szerint a WebP-t jelenleg 94%-ban támogatják a böngészők, köztük az Apple Safari, a Google Chrome, az Opera, a Mozilla Firefox, a Microsoft Edge és az Android böngészők.
- A nem támogatott böngészők esetében a JPEG/PNG továbbra is használható tartalékként.
A WebP formátumú kép használatának főbb előnyei
- A normál JPG vagy PNG kép méretéhez képest az azonos méretű WebP kép kis bájtokban is használható. Ezért a képek gyorsabban betöltődnek. Ez különösen a mobilfelhasználók számára lesz hasznos.
- Minőségi képek kiszolgálása néhány bájtban, drasztikusan megtakarítja a sávszélességet.
- Tartsa weboldalát a legújabb trendekkel naprakészen. Ne veszítsd el a beszélgetést a bika-kocsi lassú betöltési problémája miatt.
- A WebP-t a Google fejlesztői ajánlják. Segít a Google PageSpeed Insight „a képek következő generációs formátumban történő kiszolgálása” ajánlásának teljesítésében.
Így szolgálhatod ki a WebP-t egy WordPress webhelyen.
WebP kiszolgálása NGINX-ben a ShortPixel Plugin használatával
A ShortPixel plugin segíthet a tömeges képoptimalizálásban WebP konvertálással és a böngésző támogatásának megfelelő kiszolgálással. A legjobb rész, hogy ez a plugin a saját szerverén végzi a feldolgozást, így nem fogja lelassítani a webhelyét.
- Ha a WordPress Apache szerveren van elhelyezve, akkor használhatja a .htaccess átírást.
- Az NGINX esetében az alábbi átírási szabályt használhatja a hosting támogatás segítségével
- Ezt a plugint a WP Rocket cache plugin is támogatja.
Először ezt a blokkot adjuk hozzá a szerver direktíva előtt:
map $http_accept $webp_suffix {
default "";
"~*webp" ".webp";
}
Adja hozzá ezt a blokkot a kiszolgálódirektíva belsejébe:
location ~* ^(/wp-content/.+)\.(png|jpe?g)$ {
set $base $1;
set $webp_uri $base$webp_suffix;
set $webp_old_uri $base.$2$webp_suffix;
set $root "<<FULL PATH OF wp-content PARENT>>";
root $root;
add_header Vary Accept;
if ( !-f $root$webp_uri ) {
add_header X_WebP_SP_Miss $root$webp_uri;
}
try_files $webp_uri $webp_old_uri $uri =404;
}
Az elhelyezés számít. Tehát óvatosan adjuk hozzá.
A WebP Express Plugin használata az NGINX-ben
- Telepítse és aktiválja a WebP Express ingyenes bővítményt. Hatalmas köszönet a fejlesztőnek.
- Működési mód: Változatos képválaszok.
- Terjedelem: Csak feltöltés.
- Fuss Bulk Convert
- Apache szerveren tárolt WordPress esetében nincs szükség konfigurációra, mivel a .htaccess minden varázslatot elvégez.
- Az NGINX szerver felhasználójának a konfigurációs fájlt root hozzáféréssel kell módosítania.
A kód jobb szervezése érdekében azt javasolnám, hogy először az /etc/nginx/
könyvtárban helyezzük el webp.conf
néven, majd a fő szerverblokkban.
Írja be az alábbi parancsot
cd /etc/nginx/ && nano webp.conf
- Illessze be az alábbi kódot a jobb klikk segítségével a nano szerkesztőn belül az SSH terminálban.
# WebP Express rules
# --------------------
location ~* ^/?wp-content/.*\.(png|jpe?g)$ {
add_header Vary Accept;
expires 365d;
if ($http_accept !~* "webp"){
break;
}
try_files
/wp-content/webp-express/webp-images/doc-root/$uri.webp
$uri.webp
/wp-content/plugins/webp-express/wod/webp-on-demand.php?xsource=x$request_filename&wp-content=wp-content
;
}
# Route requests for non-existing webps to the converter
location ~* ^/?wp-content/.*\.(png|jpe?g)\.webp$ {
try_files
$uri
/wp-content/plugins/webp-express/wod/webp-realizer.php?wp-content=wp-content
;
}
# ------------------- (WebP Express rules ends here)
- A mentéshez nyomja meg a CTRL+O és az Enter billentyűt.
Most látogasson el a fő szerverblokkba.
cd /etc/nginx/sites-available && ls
Szerkeszd a konfigurációs fájlodat, és tedd be include webp.conf;
az alábbiak szerint.
# General
server {
listen 80;
server_tokens off;
return 301 https://$host$request_uri;
}
server {
server_tokens off;
root /var/www/html;
index index.php index.html index.htm;
server_name .gulshankumar.net;
client_max_body_size 0;
listen [::]:443 ssl http2 ipv6only=on;
listen 443 ssl http2;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_certificate /etc/comodo/cert.pem;
ssl_certificate_key /etc/comodo/private.pem;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 20m;
ssl_ciphers 'TLS13+AESGCM+AES128:EECDH+AES128';
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# WebP Express rule goes here
include webp.conf;
# WebP Rule end
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
Töltse újra vagy indítsa újra az NGINX-et.
service nginx reload
Megjegyzendő dolgok
- Ha a BunnyCDN-t használja, engedélyeznie kell a Vary Cache-t.
- A Cloudflare nem támogatja a Vary Cache-t. Próbálja ki az alábbi alternatív megközelítést.
WebP használata Cloudflare CDN használatával (Plugin nélkül)
Ha Cloudflare Pro felhasználó vagy, akkor egyszerűen engedélyezheted a WebP-t egy kattintással a Sebesség lapon.
WebP kiszolgálása a BunnyCDN Optimizer használatával (Plugin nélkül)
A BunnyCDN Optimalizáló szolgáltatásokat kínál, amely On-the-fly WebP kiszolgáló megoldást tartalmaz. Ez egy kattintással elérhető megoldás 9,5 $/év plusz költségért.
WebP kiszolgálása a JetPack Plugin használatával
- Egyszerűen telepítse és aktiválja a JetPack plugint
- Engedélyezze a Telephelygyorsítót.
Előfordulhat, hogy a képminőség romlik, ami az alábbi szűrővel javítható.
WebP kiszolgálása az Imagify használatával
Az Imagify egy képoptimalizáló plugin, amelyet a WP Media, a WP Rocket mögött álló WP Media kínál.
- Telepítse és aktiválja az Imagify plugint
- Adja meg az API-kulcsot
- A beállítások között válassza a Képcímkék módot a gyors beállításhoz.
- Alternatív megoldásként használhatsz átírási szabályt is, némi szerverkonfigurációval, ahogy leírva van itt. Az Apache esetében a .htaccess kód hozzáadása automatikus, de az NGINX esetében manuálisan kell elvégeznie.
WebP to JPG
A WebP bizonyos esetekben némileg ronthatja a képminőséget. Ha vissza szeretné állítani a WebP-ről a JPG-re, egyszerűen kövesse az alábbi lépéseket.
- WebP-vel kapcsolatos plugin deaktiválása és törlése.
- Távolítsa el a kapcsolódó beállításokat a konfigurációs fájlból (.htaccess)
- A .webp fájlok tömeges törlése és a lemezterület megtakarítása.
find . -type f -name "*.webp*" -delete
Ha ön akar-hoz megtérít WebP fájlt a JPG, akkor használja a CloudConvert elérhető eszköz.
Kézi módszer Plugin nélkül
Ez a szakasz csak tájékoztató jellegű.
lépés : WebP formátum hozzáadása a HTML dokumentumhoz
Először is konvertáld az összes képedet WebP-be, és a korábbi képformátumoddal együtt, mint tartalék. Van néhány olyan plugin, mint az Optimus, amely automatikusan elvégezheti ezt a munkát. De mutatok egy másik egyszerű manuálisan is elvégezhetőt.
- Látogasson el erre a weboldalra image.online-convert.com/convert-to-webp
- Illessze be a kép linkjét, és kattintson a konvertálásra. A WebP formátumú képek letöltődnek
- Most szerkessze a nyers HTML kódot, ahol a normál kép megjelenik.
Tegyük fel, hogy kezdetben a kép HTML kódja így nézett ki
<img src="https://www.gulshankumar.net/wp-content/uploads/2016/09/webplogo.png" alt="gulshan kumar" width="186" height="66" />
A fenti kódot egy kicsit több HTML jelöléssel kell kiegészítenie.
<picture>
<source srcset="https://www.gulshankumar.net/wp-content/uploads/2016/09/webplogo.webp" type="image/webp" />
<img src="https://www.gulshankumar.net/wp-content/uploads/2016/09/webplogo.png" alt="gulshan kumar" width="186" height="66" />
</picture>
Most a HTML-dokumentum készen áll a WebP formátumú képek kiszolgálására.
lépés : A kiszolgáló beállításainak konfigurálása
Már csak egy lépés, az Apache webszerver beállításait kell beállítanod a .htacccess segítségével, hogy a böngésző és a webszerver megfelelően tudja kezelni, mint az összes többi képet.
A Web Hosting szervere nem biztos, hogy tudja, hogy az ilyen formátumú képeket milyen mime típusból kell kiszolgálnia. Tehát hozzá kell adnia a megfelelő mime típust. Érdemes lenne expiry headert is beállítani a gyorsítótárazáshoz.
# Serve Images with correct Mime Type
AddType image/webp .webp
# Setup Cache
ExpiresActive On
ExpiresByType image/webp A2592000
Megjegyzés: Győződj meg róla, hogy a WordPress 5.8-as vagy újabb verzióját használod.
Ha az 5.8-as verziószámnál régebbi WordPress-t használsz, az nem támogatja a WebP formátumú kép feltöltését. A .webp formátumú képek feltöltése során a következő hibaüzenetet kaphatod: „Ez a fájltípus biztonsági okokból sajnos nem engedélyezett„.
Tehát, meg kell javítani ezt a problémát a következő kód hozzáadásával a téma functions.php Ez hasznos lenne abban az esetben, ha feltölti a képeket közvetlenül a WordPress Dashboard > Média opció.
function webp_upload_mimes( $existing_mimes ) {
// add webp to the list of mime types
$existing_mimes['webp'] = 'image/webp';
// return the array back to the function with our added mime type
return $existing_mimes;
}
add_filter( 'mime_types', 'webp_upload_mimes' );
Kész.
Ha segítségre van szüksége, kérjük, nézze meg a komment szekciót. Örömömre szolgálna, ha segíthetnék.
További megjegyzések
- Ha Cloudways felhasználó vagy, nem tudsz WebP-t szállítani .htaccess újraírással, mert ők az NGINX-et kifejezetten statikus fájlokra használják. Ebben az esetben két lehetősége van. Kérje meg a tárhelyszolgáltató csapatot, hogy szerkesszék meg Önnek a konfigurációs fájlt, vagy használjon JavaScriptet vagy 3rd-party CDN alapú megoldást, mint például a Bunny vagy a CF.
További olvasnivalók
Ha többet szeretne megtudni a WebP-ről, kérjük, olvassa el ezeket a linkeket.
Köszönöm.
I didn’t try the webp format as of now in WordPress. But now after reading this post I will try to implement it. I will compare the image quality from other formats as well. Thank you for sharing this article.
Have you experienced the WebP format causing problems for seo? is it better to use it as jpg or this way?
Google officially recommends using WebP format images along with JPG as fallback.
How to remove hyperlink for the webp image format?
I guess you want to remove .webp extension from URL. You need to try rewrite approach.
I have a question about ShortPixel method.
I use Plesk panel with NGINX
There is a section called Additional nginx directives
Here you can specify the settings for the nginx reverse proxy server that runs in front of Apache. Your directives will override the server-wide nginx configuration. For example, you may want to change the connection timeout or to pack requests with gzip. Use the same syntax as you use for nginx.conf. For example, if you want to pack all the proxied requests with gzip, add the line: ‘gzip_proxied any;’.
https://i.imgur.com/OLWu9bJ.png
can i add codes there i dont know?
map $http_accept $webp_suffix {
default „”;
„~*webp” „.webp”;
}
location ~* ^(/wp-content/.+).(png|jpe?g)$ {
set $base $1;
set $webp_uri $base$webp_suffix;
set $webp_old_uri $base.$2$webp_suffix;
set $root „<>”;
root $root;
add_header Vary Accept;
if ( !-f $root$webp_uri ) {
add_header X_WebP_SP_Miss $root$webp_uri;
}
try_files $webp_uri $webp_old_uri $uri =404;
You used these sentences!
before the server directive and inside directive.
I read your Installing WordPress at NGINX topic so
If i try to add these from codes is this right?
map $http_accept $webp_suffix {
default „”;
„~*webp” „.webp”;
}
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
location ~* ^(/wp-content/.+).(png|jpe?g)$ {
set $base $1;
set $webp_uri $base$webp_suffix;
set $webp_old_uri $base.$2$webp_suffix;
set $root „<>”;
root $root;
add_header Vary Accept;
if ( !-f $root$webp_uri ) {
add_header X_WebP_SP_Miss $root$webp_uri;
}
try_files $webp_uri $webp_old_uri $uri =404;
}
# Document Root
root /var/www/html;
index index.php index.html index.htm;
server_name .example.com;
client_max_body_size 0;
listen [::]:443 ssl http2 ipv6only=on;
listen 443 ssl http2;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 20m;
ssl_ciphers ‘TLS13+AESGCM+AES128:EECDH+AES128’;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~* .php$ {
if ($uri !~ „^/uploads/”) {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
log_not_found off;
access_log off;
allow all;
}
location ~* .(css|gif|svg|ico|jpeg|jpg|js|png)$ {
expires 1y;
log_not_found off;
}
# Enable Gzip compression.
gzip on;
# Disable Gzip on IE6.
gzip_disable „msie6”;
# Allow proxies to cache both compressed and regular version of file.
# Avoids clients that don’t support Gzip outputting gibberish.
gzip_vary on;
# Compress data, even when the client connects through a proxy.
gzip_proxied any;
# The level of compression to apply to files. A higher compression level increases
# CPU usage. Level 5 is a happy medium resulting in roughly 75% compression.
gzip_comp_level 5;
# Compress the following MIME types.
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
}
Is this right?
And what do you think about plesk how i use webp at plesk?
Thanks
Please consult a freelancer. It is out of scope to guide here.
Hi, this is a good article, but
It is better to install the plugin or put the code directly for webp
This way, each image does not create two urls. Does it cause a problem in the SEO site?
Dynamic rewriting from Server side doesn’t create two URLs instead it servers same just by changing response as per browser support.
A plugin is recommended way.
Hi Gulshan. Any free plugin(totally free) for converting jpg to webp format. God Bless you.
First option which is WebP Express.
Thank You! Gulshan
Hey Gulshan Kumar ,
Awesome post with good information. It is my first time commenting on your blog post and am glad to say that you have done a fabulous work and provided helpful & easy tips to serve webp format images in WordPress. I really like and appreciate the way you have explained the things in such a step-by-step process making the concept very clear and easy to understand. while scrolling through your blog post i have noticed that you have also discussed about the major benefits of using webp format image that are also providing good understanding. You have explained all the vital things in an easy language that are true enough to understand and educate the readers.
After going through this complete guide i really gain ideas and am sure that this post is definitely going to help lots of people & especially WordPress-users to sort out their query. Good work and keep sharing more similar post.
Eventually thanks for sharing your knowledge, ideas and such an informative post.
Regards
-Aadarsh
Hi Adarsh, Thanks for your kind words. It really means a lot to me.
Hello. Please check Hiwebp plugin wordpress.
https://wordpress.org/plugins/hiwebp/
Works a treat, thanks!
If you disable copy function then it’s better to not include any code reference. okay?
Thanks for notifying. I have allowed copying function for snippet in this article.
I have tried this method to enable WebP format images on my site, but I am encountering some unknown error. My site showing a low score on google page speed insight.
May I know please which specific method you have tried? Also, please share the screenshot of error. I will try my best to help you.
Why is not wordpress supporting WEBP format by default?Its high time now.
It works great in Chrome and Firefox on the PC/Laptop. BUT, the webp images are not displayed on iPhone (Chrome and Safari)
Safari is not supporting webP. Chrome on iOS is based on Safari, too. So webP won‘t work on iOS at all and you have to serve a fallback image.
Works a treat, thanks!
Hi,
I am not quite clear on where this needs to be inserted. I am looking to Optimise my header image to Webp. Is there a video or screenshot based write up on how I can include this?
Would really appreciate the help
Regards
Shwetha
Hello Gulshan,
Thanks for sharing this article.
I did follow the steps mentioned in here in this format.
But the image is not appearing on Firfox, and IE. Did I miss any thing in here.
Please suggest.
This code no longer works. He’s not loading. I don’t know why it doesn’t work.
It should work fine. Please share your site URL so I can check.
Hi..Just wondering if i need to edit each image tag or is there somewhere in my theme templates this could be done.
Any guidence would be great.
Thanks
Mark
Do I need to edit all the image tags one by one now? Isn’t there another way to do that?
Hi Gulshan,
Even after putting the code snippet in the function.php file.
I still have the same error message when I try to upload webp format. The message is „sorry this file type is not permitted for security reasons”.
Can you help fix this?
Thanks.
Martin
Hello Martin,
At my end it’s working fine. For a demo, I have sent a quick video on your email. Please check and revert back if I can help with any thing else.
Thanks
I haven’t added anything except the last code from your post in function.php to support Webp format on all of future media uploads. Do I need to add any thing else ? or will it create any kind of issue for users whose browsers are yet unsupported to this format?
anyway keep up the good work 😉
That’s all. Now you can easily upload webp directly in your WordPress Dashboard. No extra things to do. Just feel free to use it with picture HTML tag. So, it will support for all browsers, without any issues. Thanks
The problem with the suggested HTML implementation is that Chrome will make two requests, one for WEBP and another one for JPEG resulting in double requests and increasing the page load time.
Hey dear,
It doesn’t create two requests(as you are saying) instead it automatically serve only one type image format either WebP or JPEG according to HTTP accept type.
I’d suggest please try one more time and look carefully at Network Timeline in the browser console. If you see there are double requests, please email me your HTML code and timeline screenshot also. I’d love to review it. I believe it should work fine for you too.
Thanks & Regards,
Gulshan
I installed the code into the functions.php. And as you said it did allow me to upload in my WP theme. The problem is that the image doesn’t allow cropping so it won’t allow me to use it on the site.