前端效能優化之WebP
前端效能優化是一件很瑣碎的事情。它不像其它很多技術,在確切有限的步驟下就可以把功能做好。它就像是在打掃屋子,需要時常去檢查屋子是否有不整潔的地方,然後立即整理。所以在效能優化的過程中會遇到各方面的問題。本文的主題是聊聊怎麼讓圖片更“整潔”。
什麼是WebP
WebP是一種新的檔案格式,相比於jpg、png、gif,在相同的圖片質量的情況下,它有著更小的圖片大小,可以大大縮小頁面載入時間。可以參考http://isux.tencent.com/introduction-of-webp.html
如何生成WebP格式的圖片
WebP官網上提供了轉換工具,可以把jpg、png圖片轉換成WebP。
如何使用
由於WebP並沒有被大多數瀏覽器原生支援,所以在使用時並不像jpg、png圖片一樣輕便。WebP的相容方案一般分為3種:
1,伺服器端判斷是否應該返回WebP格式的圖片
當伺服器端接收到瀏覽器的圖片請求時,根據User-Agent判斷是否應該返回WebP格式的圖片。這種方法的優勢很明顯,前端幾乎不需要做任何修改就可以完美的完成此次優化任務。缺點也很明顯,你需要恭敬地給後端大大倒上一杯咖啡,然後真誠地說:“加個功能唄,這個真的很簡單!!!”
當然,這裡有一個造好的輪子,你可以提供給後端大大。pagespeed,Google開發的一個支援Nginx和Apache的模組,主要用來提高頁面載入速度。其中有一個功能convert_jpeg_to_webp,可以實現當支援WebP的瀏覽器請求圖片時,可以自動將jpg等轉換成WebP。pagespeed其它效能優化的功能也值得嘗試哦~
2,瀏覽器判斷是否應該使用WebP格式的圖片
首先,你需要知道普通格式圖片的URL和WebP格式圖片的URL。通過瀏覽器特性偵測,來判斷應該使用哪一類圖片。這種方式的缺點是隻適用於javascript動態生成的圖片,無法統一處理CSS中引用的背景圖片。
3,替瀏覽器寫解析程式
我們要做的事情是,“你沒有實現解析WebP的功能,那我來吧”。對於不支援WebP的瀏覽器,我們通過JavaScript將其轉碼成瀏覽器支援的格式,以base64的形式賦值給DOM元素。這個輪子已經被造好了,只需要簡單的引入webpjs,就可以實現WebP的轉碼功能。這種方式能夠處理所有的圖片,包括Img標籤和背景圖片。不過由於是JavaScript實現轉碼,所以對頁面效能有所影響。
偵測瀏覽器是否支援WebP
方法1,嘗試載入一張WebP圖片,觀察是否能夠正常載入
(function () {
var WebP = new Image();
WebP.onload = WebP.onerror = function () {
if (WebP.height != 2) {
// 不支援WebP
} else {
// 支援WebP
}
};
WebP.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
})();
方法2,嘗試從canvas中匯出WebP格式的圖片,觀察是否能夠正常匯出
function checkWebp() {
try {
return (document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0);
} catch (err) {
return false;
}
}
寫在最後
如果你打不開本文中的某些連結,那麼你可能需要先翻個牆~
相關文章
- 前端效能優化之效能測試前端優化
- 「前端」webp圖片適配流量優化前端Web優化
- 前端效能優化之Lazyload前端優化
- 站點優化之 WebP 實戰優化Web
- 【前端效能優化】vue效能優化前端優化Vue
- 前端效能優化之節流-throttle前端優化
- 前端效能優化之防抖-debounce前端優化
- 前端效能優化 —— 前端效能分析前端優化
- 前端效能優化之桌面瀏覽器優化策略前端優化瀏覽器
- 前端效能優化前端優化
- 前端效能優化之快取技術前端優化快取
- 前端效能優化之HTTP快取策略前端優化HTTP快取
- 前端效能優化之載入技術前端優化
- 前端效能優化 --- 圖片優化前端優化
- 前端效能優化之移動端瀏覽器優化策略前端優化瀏覽器
- web前端效能優化Web前端優化
- 前端效能優化指南前端優化
- 前端css效能優化前端CSS優化
- 前端效能優化整理前端優化
- 前端效能優化 之 瀏覽器快取前端優化瀏覽器快取
- 前端效能JQuery篇之選擇器優化前端jQuery優化
- 前端效能優化(JS/CSS優化,SEO優化)前端優化JSCSS
- 前端效能優化——桌面瀏覽器前端優化策略前端優化瀏覽器
- 前端效能優化之http請求的過程前端優化HTTP
- 前端效能優化JavaScript篇前端優化JavaScript
- 前端效能優化總結前端優化
- 前端效能優化基礎前端優化
- vue + webpack 前端效能優化VueWeb前端優化
- 前端效能優化的點前端優化
- 前端效能優化小結前端優化
- 前端效能優化術語前端優化
- 前端工程與效能優化前端優化
- 前端效能優化方案索引前端優化索引
- 前端效能優化實踐 之 百度App個人主頁優化前端優化APP
- MySQL 效能優化之索引優化MySql優化索引
- MySQL 效能優化之SQL優化MySql優化
- 前端進階(1)Web前端效能優化前端Web優化
- 前端效能優化---將script標籤放在body之後前端優化