最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

圖片該如何優(yōu)化來提高網(wǎng)站性能

 更新時間:2021年05月07日 09:09:51   作者:淺笑·  
這篇文章主要介紹了圖片該如何優(yōu)化來提高網(wǎng)站性能,對網(wǎng)站性能感興趣的同學(xué),可以參考下

概述

圖像是web上提供的最基本的內(nèi)容類型之一。他們說一張圖片勝過千言萬語。但是如果你不小心的話,圖片大小有時高達(dá)幾十兆。

因此,雖然網(wǎng)絡(luò)圖像需要清晰明快,但它們尺寸可以縮小壓縮的,使用加載時間保持在可接受的水平。

在我的網(wǎng)站上,我注意到我的主頁的頁面大小 超過了1.1MB,圖片占了約88%,我還注意到我提供的圖像比它們需要的大(在分辨率方面),顯然,還有很多改進(jìn)的空間。

我開始閱讀 Addy Osmani 的優(yōu)秀Essential Image Optimization電子書,并開始在我的網(wǎng)站上按照他們的建議做了一些圖片的優(yōu)化。,然后再對響應(yīng)式圖像進(jìn)行了一些研究并應(yīng)用了它。

這使得頁面大小減少到445kb,約62%!

什么是圖像壓縮

壓縮圖像就是在圖片保持在可接受的清晰度范圍內(nèi)同時減少文件大小,我使用imagemin來壓縮站點上的圖像。

要使用imagemin,確保你已經(jīng)安裝了 Node.js,然后打開一個終端窗口,cd進(jìn)入項目,并運行以下命令:

npm install imagemin

然后創(chuàng)建一個名為imagemin.js的新文件,寫入下面的內(nèi)容:

const imagemin = require('imagemin');
const PNGImages = 'assets/images/*.png';
const JPEGImages = 'assets/images/*.jpg';
const output = 'build/images';

你可以根據(jù)自己的需要更改PNGImages、JPEGImages和output的值,以符合你的項目結(jié)構(gòu)。

此外要執(zhí)行圖片壓縮,還需要根據(jù)要壓縮的圖像類型安裝對應(yīng)的插件。

JPEG/JPG

JPG 的優(yōu)點

JPG 最大的特點是有損壓縮。這種高效的壓縮算法使它成為了一種非常輕巧的圖片格式。另一方面,即使被稱為“有損”壓縮,JPG的壓縮方式仍然是一種高質(zhì)量的壓縮方式:當(dāng)我們把圖片體積壓縮至原有體積的 50% 以下時,JPG 仍然可以保持住 60% 的品質(zhì)。此外,JPG 格式以 24 位存儲單個圖,可以呈現(xiàn)多達(dá) 1600 萬種顏色,足以應(yīng)對大多數(shù)場景下對色彩的要求,這一點決定了它壓縮前后的質(zhì)量損耗并不容易被我們?nèi)祟惖娜庋鬯煊X——前提是你用對了業(yè)務(wù)場景。

JPG 使用場景

JPG 適用于呈現(xiàn)色彩豐富的圖片,在我們?nèi)粘i_發(fā)中,JPG 圖片經(jīng)常作為大的背景圖、輪播圖或 Banner 圖出現(xiàn)。

JPG 的缺陷

有損壓縮在上文所展示的輪播圖上確實很難露出馬腳,但當(dāng)它處理矢量圖形和 Logo 等線條感較強(qiáng)、顏色對比強(qiáng)烈的圖像時,人為壓縮導(dǎo)致的圖片模糊會相當(dāng)明顯。

此外,JPEG 圖像不支持透明度處理,透明圖片需要召喚 PNG 來呈現(xiàn)。

使用 MozJPEG 壓縮 jpeg

這里使用 Mozilla 的MozJPEG工具,該工具可以通過imagemin-mozjpeg作為 Imagemin 插件使用。你可以通過運行以下命令來安裝它:

npm install imagemin-mozjpeg

然后將以下內(nèi)容添加到的imagemin.js中:

const imageminMozjpeg = require('imagemin-mozjpeg');
const optimiseJPEGImages = () =>
  imagemin([JPEGImages], output, {
    plugins: [
      imageminMozjpeg({
        quality: 70,
      }),
    ]
  });
optimiseJPEGImages()
  .catch(error => console.log(error));

可以通過在終端中運行node imagemin.js來運行腳本。這將處理所有JPEG圖像,并將優(yōu)化后的版本放build/images文件夾中。

我發(fā)現(xiàn)將quality設(shè)置為 70 在大多數(shù)情況下可以產(chǎn)生足夠清晰的圖像,但你的項目需求可能不同,可以自行設(shè)置合適的值。

默認(rèn)情況下,MozJPEG生成漸進(jìn)式 jpeg,這會導(dǎo)致圖像從低分辨率逐漸加載到高分辨率,直到圖片完全加載為止。由于它們的編碼方式,它們也比原始的 jpeg 略小。

你可以使用 Sindre Sorhus 提供的這個命令行工具來檢查JPEG圖像是否是漸進(jìn)式的。

Addy Osmani 已經(jīng)很好地總結(jié)了使用漸進(jìn)式 jpeg 的優(yōu)缺點。對我來說,我覺得利大于弊,所以我堅持使用默認(rèn)設(shè)置。

如果你更喜歡使用原始的jpeg,可以在options對象中將progressive設(shè)置為 false。另外,請確保imagemin-mozjpeg版本的變化,請重新查看對應(yīng)文檔。

PNG (PNG-8 與 PNG-24)

PNG 的優(yōu)缺點

PNG(可移植網(wǎng)絡(luò)圖形格式)是一種無損壓縮的高保真的圖片格式。8 和 24,這里都是二進(jìn)制數(shù)的位數(shù)。按照我們前置知識里提到的對應(yīng)關(guān)系,8 位的 PNG 最多支持 256 種顏色,而 24 位的可以呈現(xiàn)約 1600 萬種顏色。

PNG 圖片具有比 JPG 更強(qiáng)的色彩表現(xiàn)力,對線條的處理更加細(xì)膩,對透明度有良好的支持。它彌補(bǔ)了上文我們提到的 JPG 的局限性,唯一的缺點就是 體積太大。

PNG 應(yīng)用場景

前面我們提到,復(fù)雜的、色彩層次豐富的圖片,用 PNG 來處理的話,成本會比較高,我們一般會交給 JPG 去存儲。

考慮到 PNG 在處理線條和顏色對比度方面的優(yōu)勢,我們主要用它來呈現(xiàn)小的 Logo、顏色簡單且對比強(qiáng)烈的圖片或背景等。

使用 pngquant 優(yōu)化 PNG 圖像

pngquant是我優(yōu)化PNG圖像的首選工具,你可以通過imagemin-pngquant使用它:

npm install imagemin-pngquant

然后將以下內(nèi)容添加到imagemin.js文件中:

const imageminPngquant = require('imagemin-pngquant');
const optimisePNGImages = () =>
  imagemin([PNGImages], output, {
    plugins: [
      imageminPngquant({ quality: '65-80' })
    ],
  });
optimiseJPEGImages()
  .then(() => optimisePNGImages())
  .catch(error => console.log(error));

我發(fā)現(xiàn)將quality設(shè)置為65-80可以在文件大小和圖像質(zhì)量之間較好的折衷方案。

有了這些設(shè)置,我可以得到一個屏幕截圖,我的網(wǎng)站從 913kb 到 187kb,沒有任何明顯的視覺損失,驚人的79% 的降幅!

WebP

WebP 的優(yōu)點

WebP 像 JPEG 一樣對細(xì)節(jié)豐富的圖片信手拈來,像 PNG 一樣支持透明,像 GIF 一樣可以顯示動態(tài)圖片——它集多種圖片文件格式的優(yōu)點于一身。
WebP 的官方介紹對這一點有著更權(quán)威的闡述:

與 PNG 相比,WebP 無損圖像的尺寸縮小了 26%。在等效的 SSIM 質(zhì)量指數(shù)下,WebP 有損圖像比同類 JPEG 圖像小25-34%。 無損 WebP 支持透明度(也稱為 alpha 通道),僅需 22% 的額外字節(jié)。對于有損 RGB 壓縮可接受的情況,有損 WebP 也支持透明度,與 PNG 相比,通常提供 3 倍的文件大小。

將 WebP 圖像提供給支持它們的瀏覽器

WebP是谷歌引入的一種相對較新的格式,它的目標(biāo)是通過以無損和有損格式編碼圖像來提供更小的文件大小,使其成為 JPEG 和 PNG 的一個很好的替代方案。

WebP 圖像的清晰度通常可以與 JPEG 和 PNG相提并論,而且文件大小要小得多。例如,當(dāng)我將屏幕截圖從上面轉(zhuǎn)換到 WebP 時,我得到了一個 88kb 的文件,其質(zhì)量與 913kb 的原始圖像相當(dāng),減少了90% !

就我個人而言,我認(rèn)為視覺效果是可以比較的,而且節(jié)省下來的大小是不容忽視的。

既然我們已經(jīng)認(rèn)識到在可能的情況下使用WebP格式是有價值的,那么很重要的一點是—它不能完全替代 JPEG 和 PNG,因為瀏覽器對 WebP 支持并不普遍。

在撰寫本文時,F(xiàn)irefox、Safari 和 Edge 都是不支持WebP的瀏覽器。

然而,根據(jù)caniuse.com的數(shù)據(jù),全球超過70%的用戶使用支持WebP的瀏覽器。這意味著,通過使用 WebP 圖像,可以為大約 70% 的客戶提供更快的 web 頁面及更好的體驗。

安裝它,運行以下命令:

npm install imagemin-webp

然后將以下內(nèi)容添加到你的imagemin.js文件中:

const imageminWebp = require('imagemin-webp');
const convertPNGToWebp = () =>
  imagemin([PNGImages], output, {
    use: [
      imageminWebp({
        quality: 85,
      }),
    ]
  });
const convertJPGToWebp = () =>
  imagemin([JPGImages], output, {
    use: [
      imageminWebp({
        quality: 75,
      }),
    ]
  });
optimiseJPEGImages()
  .then(() => optimisePNGImages())
  .then(() => convertPNGToWebp())
  .then(() => convertJPGToWebp())
  .catch(error => console.log(error));

我發(fā)現(xiàn),將quality設(shè)置為85會生成質(zhì)量與 PNG 相當(dāng)?shù)〉枚嗟?WebP 圖像。對于 jpeg,我發(fā)現(xiàn)將quality設(shè)置為75可以在視覺和文件大小之間取得很好的平衡。

提供html格式的WebP圖像

一旦有了 WebP 圖像,可以使用以下標(biāo)記將它們提供給可以使用它們的瀏覽器,同時向不兼容 WebP 的瀏覽器使用 png 或者 jpeg。

<picture>
    <source srcset="sample_image.webp" type="image/webp">
    <source srcset="sample_image.jpg" type="image/jpg">
    <img src="sample_image.jpg" alt="">
</picture>

使用此標(biāo)記,理解image/webp媒體類型的瀏覽器將下載 Webp 圖片并顯示它,而其他瀏覽器將下載 JPEG 圖片。

任何不支持<picture>的瀏覽器都將跳過所有source標(biāo)簽,并加載底部img標(biāo)簽。因此,我們通過提供對所有瀏覽器類的支持,逐步增強(qiáng)了我們的頁面。

請注意,在所有情況下,img 標(biāo)記都是實際呈現(xiàn)給頁面的內(nèi)容,因此它確實是語法的必需部分。 如果省略 img 標(biāo)記,則不會渲染任何圖像。

<picture> 標(biāo)簽和其中定義的所有source都在那里,以便瀏覽器可以選擇要使用的圖片的路徑。 選擇源圖像后,其 URL 將傳給 img 標(biāo)記,這就是顯示的內(nèi)容。

這意味著你無需設(shè)置<picture>或source標(biāo)記的樣式,因為瀏覽器不會渲染這些標(biāo)記。 因此,你可以像以前一樣繼續(xù)使用img標(biāo)簽進(jìn)行樣式設(shè)置。

以上就是圖片該如何優(yōu)化來提高網(wǎng)站性能的詳細(xì)內(nèi)容,更多關(guān)于優(yōu)化圖片提高網(wǎng)站性能的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • swiper插件自定義切換箭頭按鈕

    swiper插件自定義切換箭頭按鈕

    這篇文章主要為大家詳細(xì)介紹了swiper插件自定義切換箭頭按鈕,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 淺談javascript事件取消和阻止冒泡

    淺談javascript事件取消和阻止冒泡

    這篇文章主要介紹了淺談javascript事件取消和阻止冒泡的方法和示例,有需要的小伙伴可以參考下。
    2015-05-05
  • 深入解析Parcel如何進(jìn)行自定義配置

    深入解析Parcel如何進(jìn)行自定義配置

    Parcel?是現(xiàn)代前端開發(fā)中不可或缺的工具之一,以其“零配置”的特性迅速贏得了開發(fā)者的青睞,本文將通過幾個實例詳細(xì)介紹如何進(jìn)行?Parcel?的自定義配置,感興趣的小伙伴可以了解下
    2024-12-12
  • JavaScript模塊化開發(fā)之SeaJS

    JavaScript模塊化開發(fā)之SeaJS

    SeaJS是一個遵循CommonJS規(guī)范的JavaScript模塊加載框架,可以實現(xiàn)JavaScript的模塊化開發(fā)及加載機(jī)制,本文給大家介紹JavaScript模塊化開發(fā)之SeaJS,需要的朋友參考下
    2015-12-12
  • 強(qiáng)悍無比的WEB開發(fā)好助手FireBug(Firefox Plugin)

    強(qiáng)悍無比的WEB開發(fā)好助手FireBug(Firefox Plugin)

    強(qiáng)悍無比的WEB開發(fā)好助手FireBug(Firefox Plugin)...
    2007-01-01
  • 輕松搞定js表單驗證

    輕松搞定js表單驗證

    不用一行代碼和一句提示語就搞定整個表單驗證,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • web 頁面分頁打印的實現(xiàn)

    web 頁面分頁打印的實現(xiàn)

    網(wǎng)上找的,經(jīng)我整理添加demo如下
    2009-06-06
  • Js利用console計算代碼運行時間的方法示例

    Js利用console計算代碼運行時間的方法示例

    最近看了一本書,發(fā)現(xiàn)了個計算代碼執(zhí)行時間的方法,感覺還挺有用的,所以這篇文章主要給大家介紹了關(guān)于Javascript利用console計算代碼運行時間的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-09-09
  • NestJs使用Mongoose對MongoDB操作的方法

    NestJs使用Mongoose對MongoDB操作的方法

    這篇文章主要介紹了NestJs使用Mongoose對MongoDB操作的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 微信小程序動態(tài)設(shè)置圖片大小的方法

    微信小程序動態(tài)設(shè)置圖片大小的方法

    這篇文章主要介紹了微信小程序動態(tài)設(shè)置圖片大小的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11

最新評論

太仓市| 正镶白旗| 开化县| 四子王旗| 巴马| 巴南区| 威海市| 长子县| 准格尔旗| 商城县| 斗六市| 英山县| 贵州省| 敦煌市| 繁昌县| 苏尼特左旗| 福清市| 十堰市| 寻乌县| 醴陵市| 清水河县| 磐石市| 徐闻县| 建水县| 昌乐县| 沙湾县| 太仓市| 建宁县| 康保县| 安岳县| 杨浦区| 乌兰县| 宾阳县| 保定市| 宣威市| 云霄县| 清涧县| 永嘉县| 满城县| 蒲江县| 页游|