×

網(wǎng)站圖像優(yōu)化技巧(三)

  • 作者:新網(wǎng)
  • 來源:新網(wǎng)
  • 瀏覽:100
  • 2018-02-27 17:42:25

為了提上網(wǎng)站的性能,對網(wǎng)站的圖片進行高效的壓縮,是非常必要的,在不斷開發(fā)殺手級功能的同時,確保所有引入的資源都是最精簡的,圖像優(yōu)化就是這樣一項工作。

 為了提上網(wǎng)站的性能,對網(wǎng)站的圖片進行高效的壓縮,是非常必要的,在不斷開發(fā)殺手級功能的同時,確保所有引入的資源都是最精簡的,圖像優(yōu)化就是這樣一項工作。長久以來,大家認為網(wǎng)站的性能應該包含哪些功能是一個商業(yè)問題而非技術問題,所以就算頁面懂大小總響應時間影響極大,在性能方面也很少討論,足夠得到重視。

544356_500x500.jpg
<div>這時我們可以欺騙一下瀏覽器:
 
360.jpg 1200w
 
1200.jpg 9999w
 
這時瀏覽器把 360 的圖當成了 1200 來用了。這里可能有些疑問,圖像的寬度為什么不是90vw 了哪?因為瀏覽器被騙了但是自己卻不知道,他依然按照 1200 的圖像,去適配 dpr。414 * 90% *(360 / 1200)約等于 111.7。這種方式很智能,瀏覽器根據(jù)你的 sizes,從 w 列表中選擇最合適的圖像來調(diào)用顯示。
 
如果我們需要更精確的控制瀏覽器在什么視口大小下顯示多大的圖像,可以使用 picture 元素。
 
當視口大于 960 像素時,會加載 960.jpg。大于 768 像素時,會加載 768.jpg。視口小于768,則加載默認圖像。雖然不是每個瀏覽器都支持 picture 元素,還可以使用 Picturefill polyfill。
 
加載以及顯示策略
 
多圖渲染的情況下,結合懶加載,又要保證圖像的渲染速度,類似知乎的渲染效果,我們可以使用 progressive-jpg。
 
相比 baseline-jpg 一行一行的掃描并顯示圖片,當然都是從弱網(wǎng)角度考慮,這種顯示可能更合適。但還是有不足。參考了下知乎和 medium 等網(wǎng)站的示圖效果,可以進行模擬:
 
先創(chuàng)建一個為圖片占位的預留塊,在這個塊中會展示圖片。塊中有另外一個塊會先設置一個 padding-bottom 來撐起塊的高(即保證需要加載圖像也是這個寬度高度的比例)。這樣防止圖片在加載時發(fā)生重排。
 
加載一個輕量版的圖片。這個時候會先請求一個圖片的縮略圖。并使用模糊 blur 效果
 
等滾到到可視區(qū)域,加載高質量圖,加載完畢后取消模糊效果。
 
medium 下的實現(xiàn)方式更為復雜點,是在縮略圖加載完畢后,繪制到 canvas 畫布,再通過一個自定義的模糊函數(shù),類似于 StackBlur,同時請求高質量圖。等到請求完,再隱藏畫布。
 

免責聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,也不承認相關法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進行舉報,并提供相關證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

免費咨詢獲取折扣

Loading