應該如何使用WebP Server在不改變URL的情況下將網站圖像轉換為WebP

WebP Server這是一個基于 Golang 的服務器,允許您動態提供 WebP 圖像,在不改變圖片URL路徑的情況下,自動將JPEG、PNG、BMP、GIF等圖像轉換為WebP格式,從而減小圖片體積,降低流量消耗和提高加載速度。

應該如何使用WebP Server在不改變URL的情況下將網站圖像轉換為WebP的圖1

什么是WebP?

WebP是一種同時提供了有損壓縮與無損壓縮(可逆壓縮)的圖片文件格式,由Google推出,WEBP的格式壓縮率非常高,在同質量的情況下.webp格式的圖片體積會小很多。主流的FireFox/Chrome瀏覽器已經支持webp圖像,但目前Safari還不支持。

WebP Server的作用

WebP Server相當于一個旁路的WEB服務器,管理員配置好WebP Server后,可以自動將JPEG、PNG、BMP、GIF等圖像轉換為WebP格式,同時URL地址不會發生改變,對于FireFox/Chrome支持webp圖像的瀏覽器,直接返回webp格式給用戶,對于Safari不支持webp的瀏覽器則輸出原圖,做到用戶無感知訪問。

配置WebP Server

這篇文章我們以WordPress站點為例來實際操作一下,xiaoz的環境如下:

  • 操作系統:CentOS 7

  • 站點程序:WordPress

  • 當前Web服務器:nginx

創建systemd服務

為保持WebP Server后臺運行,使用systemd服務來管理更加方便,這里WebP Server已經為我們提供好了systemd文件,我們直接使用即可。

執行下面的命令生成systemd服務文件

./webp-server -dump-systemd

產生的服務文件內容如下:

[Unit]Description=WebP Server GoDocumentation=https://github.com/webp-sh/webp_server_goAfter=nginx.target[Service]Type=simpleStandardError=journalWorkingDirectory=/opt/webpsExecStart=/opt/webps/webp-server --config /opt/webps/config.jsonRestart=alwaysRestartSec=3s[Install]WantedBy=multi-user.target

這個服務文件直接讀取的/opt/webps/目錄,因此我們需要先創建這個目錄,并將webp-server放到這個目錄下:

#創建目錄mkdir -p /opt/webps/#將webp-server移動到對應目錄mv webp-server /opt/webps/

創建配置文件

新建一個/opt/webps/config.json作為WebP Server的配置文件:

#新建文件vi /opt/webps/config.json

內容如下:

{        "HOST": "127.0.0.1",        "PORT": "3333",        "QUALITY": "80",        "IMG_PATH": "/data/wwwroot/xiaoz.me",        "EXHAUST_PATH": "/data/caches/xiaoz.me",        "ALLOWED_TYPES": ["jpg","png","jpeg","bmp"]
}

各參數含義如下,請根據實際情況修改:

  • HOST:監聽IP

  • PORT:監聽端口

  • QUALITY:優化程度,默認為80

  • IMG_PATH:站點圖片存放路徑,一般是站點根目錄

  • EXHAUST_PATH:緩存路徑,這個目錄需要自己創建

  • ALLOWED_TYPES:哪些圖片后綴需要轉換為webp

運行WebP Server

上面配置完成后,輸入下面的命令來運行WebP Server

#刷新服務systemctl daemon-reload#啟動WebP Serversystemctl start webp-server#開機啟動systemctl enable webp-server

nginx反向代理

在您的站點配置文件中,添加下面的反向代理配置,并重啟Nginx生效。

location ^~ /wp-content/uploads/ {    proxy_set_header Host $http_host;    proxy_pass http://127.0.0.1:3333;
}

對比驗證

使用瀏覽器打開https://cdn.xiaoz.me/wp-content/uploads/2020/02/snipaste_20200220_200213.png查看到圖片大小為109Kb,圖像MIME類型為image/png

應該如何使用WebP Server在不改變URL的情況下將網站圖像轉換為WebP的圖2

再訪問WebP Server的地址進行對比,可以看到圖像被壓縮為了55.3Kb,MIME類型變為了image/webp,壓縮效果非常明顯。

應該如何使用WebP Server在不改變URL的情況下將網站圖像轉換為WebP的圖3

應該如何使用WebP Server在不改變URL的情況下將網站圖像轉換為WebP的圖4

總結

WebP Server可以做到不改變圖片URL路徑的情況下,根據訪客瀏覽器判斷輸出WebP圖像還是原圖,這一點非常方便。但如果網站啟用了CDN后,CDN邊緣節點會將優化過的WebP圖像進行緩存,若訪客使用Safari這類不支持WebP圖像的瀏覽器將導致圖像無法顯示。因此WebP Server不太適合CDN場景,除非您直接考慮放棄Safari用戶。

除此之外,又拍云CDN也支持WebP圖像自適應,從CDN方面著手即可解決WebP Server無法使用CDN的痛點。



登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1