备案权重域名预定

 找回密碼
 加入我們

WebP智能兼容方案為wordpress圖片加載提速

[複製鏈接]
小豬哼囔 發表於 2019-2-7 22:22:56 | 顯示全部樓層 |閱讀模式
為主題增加WebP支持,通過這個新功能可以為網站的圖片智能替換成WebP格式圖片。
WebP?如果你還沒有聽過的話那就先來瞭解一下。
WebP介紹
先看下維基百科的介紹
WebP(發音weppy),是一種同時提供了有損壓縮與無損壓縮(可逆壓縮)的圖片文件格式,派生自視頻編碼格式VP8,被認為是WebM多媒體格式的姊妹項目,是由Google在購買On2 Technologies後發展出來,以BSD授權條款發佈。WebP最初在2010年發佈,目標是減少文件大小,但達到和JPEG格式相同的圖片質量,希望能夠減少圖片檔在網絡上的發送時間。2011年11月8日,Google開始讓WebP支持無損壓縮和透明色(alpha通道)的功能,而在2012年8月16日的參考實做libwebp 0.2.0中正式支持。根據Google較早的測試,WebP的無損壓縮比網絡上找到的PNG檔少了45%的文件大小,即使這些PNG檔在使用pngcrush和PNGOUT處理過,WebP還是可以減少28%的文件大小。
從上面的介紹可以看出,WebP是谷歌推出的一種圖片格式,它的優點就是同等畫面質量下,體積比jpg、png這些少了28%甚至45%,這也意味著使用webp可以使圖片體積更小從而達到極大提升圖片加載速度的效果,並且也能降低服務器帶寬和流量成本(說不定可以節省幾套主題的費用)。
簡單來說就是2個方面的好處:
  • 用戶體驗:更少的加載時間,減少等待;
  • 節約成本:更少的帶寬、流量,節省建站成本
實際效果如何呢?下面以JustNews主題演示站為例進行測試,效果如圖:
如圖所示,開啟webp前圖片大小4.5M,開啟後只有2.3M,幾乎減少了一半,效果非常明顯。
WebP的兼容性
既然webp這麼好,為什麼沒有大範圍使用呢?
這是因為webp畢竟只是谷歌自己推出的,主要應用在谷歌自己的chrome瀏覽器和安卓系統,所以是存在兼容性問題的,如果使用不兼容的瀏覽器打開是無法顯示webp圖片的,有興趣的話可以看下webp在caniuse上的兼容情況:https://caniuse.com/#search=webp
圖中右上角圈起來的數字看到沒?根據全球瀏覽器份額情況統計是有73.17%是支持的,並且這麼優秀的圖片格式已經被越來越多的瀏覽器和設備兼容,這是大勢所趨,所以我們認為這個兼容問題是有必要找到解決方案的。
WPCOM主題WebP智能兼容方案
在我們新版的WordPress主題中,我們在前端js代碼中增加了智能識別瀏覽器特性是否支持webp格式的功能,如果支持的話,則會自動替換成webp格式的圖片,這時候瀏覽器加載的就是webp圖片,如果瀏覽器不支持的話,則會繼續使用之前的圖片,這樣就能完美的解決兼容性問題了。
其中有兩個技術細節需要單獨說一下:webp轉換和js識別替換。
webp轉換
由於webp並不是全部兼容,所以平常圖片還是需要用jpg、png這種通用格式,但是如果用戶自己轉換的話那就會很麻煩了,每張圖片親自轉換也很累的,而服務器端自動完成轉換的話會涉及到第三方擴展的安裝、配置,這對普通用戶是非常困難的,而虛擬主機用戶就更沒希望了,所以在webp轉換上主題是基於第三方雲儲存或者CDN的自動轉換服務完成的,例如常見的七牛、阿里雲OSS、騰訊雲cos、又拍雲這些都是有的。
js識別替換
之所以選擇在js端識別,是基於2方面原因考慮的:
  • 如果在PHP進行圖片處理,無法避免頁面緩存的問題:例如使用兼容webp的瀏覽器訪問,生成了支持webp的緩存,那麼使用不兼容的瀏覽器訪問就會自動返回這個緩存,這時候webp圖片就無法正常顯示了;
  • PHP無法正確判斷是否兼容:可能偽造瀏覽器UA信息,也可能預設的兼容列表過時導致判斷錯誤
不過選擇js識別的話也會面臨一個問題:由於瀏覽器加載渲染頁面的原因,js在執行的時候圖片可能已經加載完成,也就是說js來不及替換成webp格式就已經加載了原來的格式圖片了,如果這時候再加載webp不僅毫無意義,反而多此一舉浪費資源。所以鑒於這個緣故,webp的識別替換是需要配合主題的圖片延遲加載(lazyload)功能,開啟了lazyload的圖片頁面加載完成後不會立即加載,而是根據瀏覽器滾動到圖片的位置的時候加載,剛好完美解決了上面的問題了。
所以最後由於這兩個技術問題的原因,我們的webp需要配合第三方服務進行webp轉換,以及開啟主題的圖片延遲加載功能才可生效。
WebP功能開啟
說了這麼多,這麼牛的功能怎麼開啟呢?
  • 剛剛說了,這個功能是我們主題裡面的功能,如果沒有購買我們的主題的話可以瞭解一下:https://www.wpcom.cn/themes
  • 然後webp轉換是依賴第三方雲儲存或者CDN完成的,所以需要使用了這類服務並且瞭解下他們是否支持webp,目前據我所知七牛、又拍雲、阿里雲oss、騰訊雲cos都是支持的,可以在主題設置>優化加速裡面設置webp後綴。
  • 同時前端webp識別是配合圖片延遲加載功能,可以在主題設置>優化加速裡面開啟常規優化-縮略圖延遲加載和文章優化-圖片延遲加載。

回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 加入我們

本版積分規則

备案权重域名预定

4um點擊跨境網編創業社區

GMT+8, 2024-11-24 04:38

By DZ X3.5

QQ

快速回復 返回頂部 返回列表