欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线

JavaScript不得不知的圖片Base64編碼小知識

2021-03-02    分類: 網站建設

圖片處理在前端工作中可謂占據了很重要的一壁江山。而圖片的 base64 編碼可能相對一些人而言比較陌生,本文不是從純技術的角度去討論圖片的 base64 編碼。標題略大,不過只是希望通過一些淺顯的論述,讓你知道什么是圖片的 base64 編碼,為什么我們要用它,我們如何使用并且方便的使用它,并讓你懂得如何去在前端的實際工作中運用它。

什么是 base64 編碼?

我不是來講概念的,直接切入正題,圖片的 base64 編碼就是可以將一副圖片數據編碼成一串字符串,使用該字符串代替圖像地址。

這樣做有什么意義呢?我們知道,我們所看到的網頁上的每一個圖片,都是需要消耗一個 http 請求下載而來的(所有才有了 csssprites 技術的應運而生,但是 csssprites 有自身的局限性,下文會提到)。

沒錯,不管如何,圖片的下載始終都要向服務器發出請求,要是圖片的下載不用向服務器發出請求,而可以隨著 HTML 的下載同時下載到本地那就太好了,而 base64 正好能解決這個問題。

那么圖片的 base64 編碼長什么樣子呢?舉個栗子。www.google.com 的首頁搜索框右側的搜索小圖標使用的就是base64編碼。我們可以看到:


上面分別是圖片的 base64 編碼在 css 里面的寫法和在 html 標簽里的寫法。base64 編碼長得就是這個樣子,當然 base64 編碼不僅僅運用在圖片編碼,還可以:

thunder://QUFodHRwOi8vZG93bi5zYW5kYWkubmV0L3RodW5kZXI3L1RodW5kZXI3LjEuNS4yMTUyLmV4ZVpa(不要復制我我真的不是種子)

嘿嘿沒錯,迅雷的“專用地址”也是用 Base64 加密的,有興趣自行 google,不做贅述。

為什么要使用 Base64 編碼?

那么為什么要使用 base64 傳輸圖片文件?上文也有提及,因為這樣可以節省一個 http 請求。圖片的 base64 編碼可以算是前端優化的一環。效益雖小,但卻缺能積少成多。

說到這里,不得不提的是 CssSprites 技術,后者也是為了減少 http 請求,而將頁面中許多細小的圖片合并為一張大圖。那么圖片的 base64 編碼和 CssSprites 有什么異同,又該如何取舍呢?

所以,在這里要明確使用 base64 的一個前提,那就是被 base64 編碼的圖片足夠尺寸小。以博客園的 logo 為例:

JavaScript不得不知的圖片Base64編碼小知識

如圖所示,博客園的 Logo 只有 3.27KB,已經很小了,但是如果將其制作轉化成 base64 編碼,生成的 base64 字符串編碼足足有 4406 個,也就是說,圖片被編碼之后,生成的字符串編碼大小一般而言都會比原文件稍大一些。即便 base64 編碼能夠被 gzip 壓縮,壓縮率能達到 50% 以上,想象一下,一個元素的 css 樣式編寫居然超過了 2000個 字符,那對 css 整體的可讀性將會造成十分大的影響,代碼的冗余使得在此使用 base64 編碼將得不償失。

那么,是不是表示 base64 編碼無用武之地呢?不然。當頁面中的圖片滿足以下要求,base64 就能大顯生手。

如果圖片足夠小且因為用處的特殊性無法被制作成雪碧圖(CssSprites),在整個網站的復用性很高且基本不會被更新。

那么此時使用 base64 編碼傳輸圖片就可謂好鋼用在刀刃上,思前想后,符合這個規則的,有一個是我們經常會遇到的,就是頁面的背景圖 background-image 。在很多地方,我們會制作一個很小的圖片大概是幾px*幾px,然后平鋪它頁面當背景圖。因為是背景圖的緣故,所以無法將它放入雪碧圖,而它卻存在網站的很多頁面,這種圖片往往只有幾十字節,卻需要一個 http 請求,十分不值得。那么此時將它轉化為 base64 編碼,何樂而不為?

下面是一個只有 50 字節的2*2的的背景圖。將其轉化成 base64 編碼,只有 100 多個字符,相比一個 http 請求,這種轉換無疑更值得推崇。

JavaScript不得不知的圖片Base64編碼小知識

CssSprites與Base64編碼

簡單陳述一下我對何時這使用這兩種優化方法的看法。

使用CssSprites合并為一張大圖:

  • 頁面具有多種風格,需要換膚功能,可使用CssSprites
  • 網站已經趨于好,不會再三天兩頭的改動(例如button大小、顏色等)
  • 使用時無需重復圖形內容
  • 沒有 Base64 編碼成本,降低圖片更新的維護難度。(但注意 Sprites 同時修改 css 和圖片某些時候可能造成負擔)
  • 不會增加 CSS 文件體積

使用base64直接把圖片編碼成字符串寫入CSS文件:

  • 無額外請求
  • 對于極小或者極簡單圖片
  • 可像單獨圖片一樣使用,比如背景圖片重復使用等
  • 沒有跨域問題,無需考慮緩存、文件頭或者cookies問題

更便捷的將圖片轉化為Base64編碼

將圖片轉化為 base64 編碼有許多工具,例如本文中我所使用的 http://www.pjhome.net/web/html5/encodeDataUrl.htm ,但是很多這些網站是國外網站,經常被墻登陸不了。這里介紹一個更為快捷的方法,就是利用 Chrome 瀏覽器(我想 FEer 都應該有Chrome 瀏覽器吧=。=)。

在 chrome 下新建一個窗口,然后把要轉化的圖片直接拖入瀏覽器,打開控制臺,點 Source,如下圖所示,點擊圖片,右側就會顯示該圖片的 base64 編碼,是不是很方便。

JavaScript不得不知的圖片Base64編碼小知識

一些誤區

Base64 雖有優點,但是缺點也很明顯,在使用上存在一些明顯的缺陷。

1. 使用 Base64 不代表性能優化

是的,使用 Base64 的好處是能夠減少一個圖片的 HTTP 請求,然而,與之同時付出的代價則是 CSS 文件體積的增大。

而 CSS 文件體積的增大意味著什么呢?意味著 CRP 的阻塞。

CRP(Critical Rendering Path,關鍵渲染路徑):當瀏覽器從服務器接收到一個HTML頁面的請求時,到屏幕上渲染出來要經過很多個步驟。瀏覽器完成這一系列的運行,或者說渲染出來我們常常稱之為“關鍵渲染路徑”。

通俗而言,就是圖片不會導致關鍵渲染路徑的阻塞,而轉化為 Base64 的圖片大大增加了 CSS 文件的體積,CSS 文件的體積直接影響渲染,導致用戶會長時間注視空白屏幕。HTML 和 CSS 會阻塞渲染,而圖片不會。

2. 頁面解析 CSS 生成的 CSSOM 時間增加

Base64 跟 CSS 混在一起,大大增加了瀏覽器需要解析CSS樹的耗時。其實解析CSS樹的過程是很快的,一般在幾十微妙到幾毫秒之間。

CSS 對象模型 (CSSOM):CSSOM是一個建立在web頁面上的 CSS 樣式的映射,它和DOM類似,但是只針對CSS而不是HTML。

CSSOM 生成過程:

JavaScript不得不知的圖片Base64編碼小知識

CSSOM 生成過程大致是,解析 HTML ,在文檔的 head 部分遇到了一個 link 標記,該標記引用一個外部 CSS 樣式表,下載該樣式表后根據上述過程生成 CSSOM 樹。 這里我們要知道的是,CSSOM 阻止任何東西渲染,(意味著在CSS沒處理好之前所有東西都不會展示),而如果CSS文件中混入了Base64,那么(因為文件體積的大幅增長)解析時間會增長到十倍以上。

而且,最重要的是,增加的解析時間全部都在關鍵渲染路徑上。

所以,當我們需要使用到 Base64 技術的時,一定要意識到上述的問題,有取舍的進行使用(大家在開發vue的時候,配合webpack打包,應該會發現有一些圖片會被webpack打包成base64格式,一般是1024個字節以內的)。

新聞標題:JavaScript不得不知的圖片Base64編碼小知識
網站網址:http://m.kartarina.com/news32/103782.html

成都網站建設公司_創新互聯,為您提供建站公司網站設計搜索引擎優化網頁設計公司商城網站品牌網站設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
av色综合久久天堂av综合| 亚洲国产精品天堂| 欧美一区二区三区四区久久| 99re在线视频这里只有精品| 成人毛片在线观看| 成人免费精品视频| 91理论电影在线观看| 日本精品一级二级| 色悠久久久久综合欧美99| 色婷婷综合中文久久一本| 91香蕉视频在线| 在线观看日韩电影| 6080国产精品一区二区| 日韩一区二区在线播放| 久久精品亚洲国产奇米99| 欧美国产日韩精品免费观看| 中文字幕中文字幕一区二区| 亚洲乱码国产乱码精品精的特点 | 久久99国产精品麻豆| 日本成人中文字幕在线视频| 麻豆91在线播放免费| 国产福利精品导航| 色婷婷综合中文久久一本| 欧美乱妇15p| 国产香蕉久久精品综合网| 中文字幕亚洲区| 亚洲一区精品在线| 激情综合网av| 色综合一区二区三区| 91精品国产麻豆| 中文字幕精品—区二区四季| 午夜视频在线观看一区二区 | 一区二区三区色| 视频一区二区不卡| 国产乱码精品一区二区三 | 日韩欧美高清在线| 日本一区二区三区电影| 亚洲成人在线观看视频| 国产不卡在线视频| 欧美久久一二三四区| 国产精品国产三级国产普通话蜜臀 | 欧美视频在线一区| 欧美激情综合五月色丁香小说| 亚洲美女精品一区| 国产精品一品二品| 日韩一区二区三区在线视频| 日韩久久一区二区| 国产精品主播直播| 日韩一区二区三区三四区视频在线观看 | 精品国产在天天线2019| 一区二区三区电影在线播| 国产乱码精品一品二品| 欧美日韩一级大片网址| 亚洲色图制服诱惑| 成人黄色小视频在线观看| 日韩一区二区三区三四区视频在线观看| 亚洲三级电影全部在线观看高清| 国产麻豆精品在线观看| 日韩视频免费直播| 午夜视频在线观看一区二区三区| 一本一本大道香蕉久在线精品| 久久只精品国产| 久久精品国产99国产精品| 欧美色倩网站大全免费| 亚洲精品成人天堂一二三| 成人av先锋影音| 国产精品乱人伦| 岛国精品在线观看| 久久久久九九视频| 精品无人码麻豆乱码1区2区| 欧美二区在线观看| 日韩二区三区在线观看| 在线成人免费视频| 蜜臀av一区二区在线免费观看| 欧美日韩成人综合天天影院 | 秋霞电影网一区二区| 欧美日韩激情在线| 日韩综合在线视频| 91精品国产综合久久精品麻豆| 天堂一区二区在线| 欧美一区二区三区视频免费播放| 国产乱一区二区| 精品久久久久香蕉网| 精品一区二区三区蜜桃| 久久夜色精品一区| 国产成人综合网站| 亚洲青青青在线视频| 欧美视频日韩视频| 欧美aaa在线| 久久久噜噜噜久噜久久综合| 福利电影一区二区| 亚洲激情欧美激情| 欧美一卡2卡3卡4卡| 韩国精品免费视频| 国产精品女人毛片| 精品视频全国免费看| 九九国产精品视频| 国产精品美女一区二区三区| 91视频观看免费| 日韩专区中文字幕一区二区| 久久久久久99久久久精品网站| 99视频国产精品| 免费成人美女在线观看| 国产午夜亚洲精品午夜鲁丝片| 91视频在线观看免费| 麻豆国产精品777777在线| 国产色综合一区| 欧美性三三影院| 国产麻豆精品视频| 亚洲一区二区精品3399| 久久久www成人免费无遮挡大片| 色综合天天综合色综合av| 麻豆国产精品777777在线| 亚洲色图欧洲色图| 精品国产1区2区3区| 在线免费av一区| 国产成人8x视频一区二区| 午夜日韩在线观看| 国产精品毛片久久久久久| 91精品国产色综合久久ai换脸| 成人av中文字幕| 久久国产精品无码网站| 一区二区免费在线| 国产精品免费观看视频| 欧美mv日韩mv国产| 欧美日韩五月天| 91在线免费播放| 天天色综合天天| 国产亚洲欧美日韩俺去了| 538在线一区二区精品国产| www.亚洲色图| 国产成人综合在线观看| 另类综合日韩欧美亚洲| 偷拍日韩校园综合在线| 一区二区三区中文字幕电影| 欧美国产精品中文字幕| 精品久久一区二区三区| 91精品欧美福利在线观看| 欧美专区日韩专区| 91美女在线观看| av一区二区久久| 成人污视频在线观看| 国产精品99久| 国产91精品久久久久久久网曝门| 久久超碰97人人做人人爱| 奇米影视7777精品一区二区| 亚洲国产精品嫩草影院| 亚洲一区成人在线| 亚洲午夜免费视频| 亚洲国产日韩精品| 亚洲妇女屁股眼交7| 亚洲综合视频在线| 亚洲大片一区二区三区| 天堂va蜜桃一区二区三区| 婷婷中文字幕一区三区| 日日夜夜免费精品视频| 日韩中文字幕av电影| 秋霞午夜鲁丝一区二区老狼| 久久国产综合精品| 国内不卡的二区三区中文字幕| 加勒比av一区二区| 国产成+人+日韩+欧美+亚洲| av在线播放不卡| 精品视频一区二区三区免费| 欧美一区日韩一区| 精品福利一区二区三区| 欧美经典一区二区| 亚洲日本一区二区三区| 亚洲丶国产丶欧美一区二区三区| 亚洲高清免费视频| 激情成人综合网| 成人av网址在线| 欧美中文一区二区三区| 在线综合视频播放| 亚洲国产精品成人综合色在线婷婷| 中文字幕中文乱码欧美一区二区 | 精品免费一区二区三区| 欧美国产一区视频在线观看| 亚洲欧美日本在线| 日本人妖一区二区| 成人一道本在线| 欧美久久久久久久久| 国产精品午夜在线| 亚洲一区免费观看| 国产99久久久国产精品潘金 | 久久精品人人做人人综合| 亚洲色图一区二区三区| 亚洲国产sm捆绑调教视频| 久久精品国产**网站演员| 91浏览器在线视频| 欧美va日韩va| 亚洲欧美电影院| 精品一区二区国语对白| 色激情天天射综合网| 欧美精品一区二区三| 亚洲综合色视频| 国产成人欧美日韩在线电影| 欧美日韩成人综合天天影院 | 亚洲成av人综合在线观看| 国产91富婆露脸刺激对白|