久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

JavaScript不得不知的圖片Base64編碼小知識(shí)

2021-03-02    分類(lèi): 網(wǎng)站建設(shè)

圖片處理在前端工作中可謂占據(jù)了很重要的一壁江山。而圖片的 base64 編碼可能相對(duì)一些人而言比較陌生,本文不是從純技術(shù)的角度去討論圖片的 base64 編碼。標(biāo)題略大,不過(guò)只是希望通過(guò)一些淺顯的論述,讓你知道什么是圖片的 base64 編碼,為什么我們要用它,我們?nèi)绾问褂貌⑶曳奖愕氖褂盟?,并讓你懂得如何去在前端的?shí)際工作中運(yùn)用它。

什么是 base64 編碼?

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

這樣做有什么意義呢?我們知道,我們所看到的網(wǎng)頁(yè)上的每一個(gè)圖片,都是需要消耗一個(gè) http 請(qǐng)求下載而來(lái)的(所有才有了 csssprites 技術(shù)的應(yīng)運(yùn)而生,但是 csssprites 有自身的局限性,下文會(huì)提到)。

沒(méi)錯(cuò),不管如何,圖片的下載始終都要向服務(wù)器發(fā)出請(qǐng)求,要是圖片的下載不用向服務(wù)器發(fā)出請(qǐng)求,而可以隨著 HTML 的下載同時(shí)下載到本地那就太好了,而 base64 正好能解決這個(gè)問(wèn)題。

那么圖片的 base64 編碼長(zhǎng)什么樣子呢?舉個(gè)栗子。www.google.com 的首頁(yè)搜索框右側(cè)的搜索小圖標(biāo)使用的就是base64編碼。我們可以看到:


上面分別是圖片的 base64 編碼在 css 里面的寫(xiě)法和在 html 標(biāo)簽里的寫(xiě)法。base64 編碼長(zhǎng)得就是這個(gè)樣子,當(dāng)然 base64 編碼不僅僅運(yùn)用在圖片編碼,還可以:

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

嘿嘿?zèng)]錯(cuò),迅雷的“專(zhuān)用地址”也是用 Base64 加密的,有興趣自行 google,不做贅述。

為什么要使用 Base64 編碼?

那么為什么要使用 base64 傳輸圖片文件?上文也有提及,因?yàn)檫@樣可以節(jié)省一個(gè) http 請(qǐng)求。圖片的 base64 編碼可以算是前端優(yōu)化的一環(huán)。效益雖小,但卻缺能積少成多。

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

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

JavaScript不得不知的圖片Base64編碼小知識(shí)

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

那么,是不是表示 base64 編碼無(wú)用武之地呢?不然。當(dāng)頁(yè)面中的圖片滿(mǎn)足以下要求,base64 就能大顯生手。

如果圖片足夠小且因?yàn)橛锰幍奶厥庑詿o(wú)法被制作成雪碧圖(CssSprites),在整個(gè)網(wǎng)站的復(fù)用性很高且基本不會(huì)被更新。

那么此時(shí)使用 base64 編碼傳輸圖片就可謂好鋼用在刀刃上,思前想后,符合這個(gè)規(guī)則的,有一個(gè)是我們經(jīng)常會(huì)遇到的,就是頁(yè)面的背景圖 background-image 。在很多地方,我們會(huì)制作一個(gè)很小的圖片大概是幾px*幾px,然后平鋪它頁(yè)面當(dāng)背景圖。因?yàn)槭潜尘皥D的緣故,所以無(wú)法將它放入雪碧圖,而它卻存在網(wǎng)站的很多頁(yè)面,這種圖片往往只有幾十字節(jié),卻需要一個(gè) http 請(qǐng)求,十分不值得。那么此時(shí)將它轉(zhuǎn)化為 base64 編碼,何樂(lè)而不為?

下面是一個(gè)只有 50 字節(jié)的2*2的的背景圖。將其轉(zhuǎn)化成 base64 編碼,只有 100 多個(gè)字符,相比一個(gè) http 請(qǐng)求,這種轉(zhuǎn)換無(wú)疑更值得推崇。

JavaScript不得不知的圖片Base64編碼小知識(shí)

CssSprites與Base64編碼

簡(jiǎn)單陳述一下我對(duì)何時(shí)這使用這兩種優(yōu)化方法的看法。

使用CssSprites合并為一張大圖:

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

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

  • 無(wú)額外請(qǐng)求
  • 對(duì)于極小或者極簡(jiǎn)單圖片
  • 可像單獨(dú)圖片一樣使用,比如背景圖片重復(fù)使用等
  • 沒(méi)有跨域問(wèn)題,無(wú)需考慮緩存、文件頭或者cookies問(wèn)題

更便捷的將圖片轉(zhuǎn)化為Base64編碼

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

在 chrome 下新建一個(gè)窗口,然后把要轉(zhuǎn)化的圖片直接拖入瀏覽器,打開(kāi)控制臺(tái),點(diǎn) Source,如下圖所示,點(diǎn)擊圖片,右側(cè)就會(huì)顯示該圖片的 base64 編碼,是不是很方便。

JavaScript不得不知的圖片Base64編碼小知識(shí)

一些誤區(qū)

Base64 雖有優(yōu)點(diǎn),但是缺點(diǎn)也很明顯,在使用上存在一些明顯的缺陷。

1. 使用 Base64 不代表性能優(yōu)化

是的,使用 Base64 的好處是能夠減少一個(gè)圖片的 HTTP 請(qǐng)求,然而,與之同時(shí)付出的代價(jià)則是 CSS 文件體積的增大。

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

CRP(Critical Rendering Path,關(guān)鍵渲染路徑):當(dāng)瀏覽器從服務(wù)器接收到一個(gè)HTML頁(yè)面的請(qǐng)求時(shí),到屏幕上渲染出來(lái)要經(jīng)過(guò)很多個(gè)步驟。瀏覽器完成這一系列的運(yùn)行,或者說(shuō)渲染出來(lái)我們常常稱(chēng)之為“關(guān)鍵渲染路徑”。

通俗而言,就是圖片不會(huì)導(dǎo)致關(guān)鍵渲染路徑的阻塞,而轉(zhuǎn)化為 Base64 的圖片大大增加了 CSS 文件的體積,CSS 文件的體積直接影響渲染,導(dǎo)致用戶(hù)會(huì)長(zhǎng)時(shí)間注視空白屏幕。HTML 和 CSS 會(huì)阻塞渲染,而圖片不會(huì)。

2. 頁(yè)面解析 CSS 生成的 CSSOM 時(shí)間增加

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

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

CSSOM 生成過(guò)程:

JavaScript不得不知的圖片Base64編碼小知識(shí)

CSSOM 生成過(guò)程大致是,解析 HTML ,在文檔的 head 部分遇到了一個(gè) link 標(biāo)記,該標(biāo)記引用一個(gè)外部 CSS 樣式表,下載該樣式表后根據(jù)上述過(guò)程生成 CSSOM 樹(shù)。 這里我們要知道的是,CSSOM 阻止任何東西渲染,(意味著在CSS沒(méi)處理好之前所有東西都不會(huì)展示),而如果CSS文件中混入了Base64,那么(因?yàn)槲募w積的大幅增長(zhǎng))解析時(shí)間會(huì)增長(zhǎng)到十倍以上。

而且,最重要的是,增加的解析時(shí)間全部都在關(guān)鍵渲染路徑上。

所以,當(dāng)我們需要使用到 Base64 技術(shù)的時(shí),一定要意識(shí)到上述的問(wèn)題,有取舍的進(jìn)行使用(大家在開(kāi)發(fā)vue的時(shí)候,配合webpack打包,應(yīng)該會(huì)發(fā)現(xiàn)有一些圖片會(huì)被webpack打包成base64格式,一般是1024個(gè)字節(jié)以?xún)?nèi)的)。

新聞標(biāo)題:JavaScript不得不知的圖片Base64編碼小知識(shí)
網(wǎng)站網(wǎng)址:http://www.js-pz168.com/news32/103782.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化網(wǎng)頁(yè)設(shè)計(jì)公司、商城網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
国产成人精品免费看| 久久久久久一区| 欧美系列一区| 欧美日韩亚洲高清一区二区| 久久久99久久精品欧美| 亚洲综合一区在线| 国产成人精品免费一区二区| 久久艹中文字幕| 欧美伦理影视网| 国产精品久久毛片| 久久国产精品免费| 成人在线免费网站| 在线看国产一区| 国产日产欧美一区| 日本不卡视频在线观看| 91久久久一线二线三线品牌| 一区二区国产日产| 久久看人人爽人人| 日韩**一区毛片| 91入口在线观看| 在线观看亚洲精品| 中文无字幕一区二区三区| 免费在线观看日韩欧美| www.久久艹| 欧美日韩一区国产| 亚洲欧美日韩人成在线播放| 精品在线观看免费| 久中文字幕一区| 日韩一级二级三级| 亚洲国产视频一区| 91网站在线播放| 欧洲亚洲国产日韩| 亚洲人成影院在线观看| 国产成人日日夜夜| 亚洲欧洲精品在线观看| 国产欧美日韩在线看| 久久av资源网| 欧美日韩精品综合| 欧美精品一区二区三区蜜桃 | 久久免费视频1| 日韩精品资源二区在线| 婷婷国产在线综合| 国产精品免费一区二区| 在线成人小视频| 亚洲v中文字幕| 国产v亚洲v天堂无码| 欧美精品日日鲁夜夜添| 亚洲成人黄色小说| 国产精品国产三级欧美二区| 666欧美在线视频| 亚洲444eee在线观看| 国产精品三区www17con| 日韩一卡二卡三卡| 日本成人中文字幕在线视频| 久久福利电影| 久久久一区二区三区| 国产在线一区二区综合免费视频| 日韩中文一区二区三区| 国产精品天天摸av网| 国产1区2区3区精品美女| 色婷婷精品大在线视频| 亚洲免费观看高清| av成人观看| 日韩一区二区三区四区五区六区| 秋霞午夜av一区二区三区| 欧美一区二区高清在线观看| 欧美经典一区二区| 成人黄色网址在线观看| 欧美精品久久99久久在免费线| 午夜婷婷国产麻豆精品| 蜜桃av色综合| 欧美高清在线一区| 99精品一区二区三区| 91精品国产综合久久精品app| 免费视频一区二区| 午夜精品区一区二区三| 亚洲欧美日韩国产另类专区 | 久久偷窥视频| 日本一区二区免费在线观看视频| 成人av免费在线观看| 91精品欧美一区二区三区综合在 | 欧美日韩视频在线一区二区| 日韩主播视频在线| 色一情一区二区三区四区 | 久久青草国产手机看片福利盒子| 国产成人在线视频免费播放| 欧美日韩免费电影| 免费不卡在线观看| 永久久久久久| 天天影视涩香欲综合网| 天天综合狠狠精品| 一区二区在线看| 欧美aaaaa喷水| 自拍偷自拍亚洲精品播放| 国产91免费视频| 欧美国产日韩在线观看| 成人动漫在线视频| 国产日韩欧美高清在线| 91在线看网站| 国产欧美精品在线观看| 成人国产一区二区| 国产欧美精品区一区二区三区 | 国产免费观看久久| 成人av资源| 中文子幕无线码一区tr| 俄罗斯精品一区二区| 欧美国产一区二区在线观看| 国产精品免费观看高清| 国产精品福利一区| 精品无人区一区二区三区| 最新中文字幕一区二区三区 | 成人av免费网站| www国产精品av| 91一区二区三区| 欧美国产禁国产网站cc| 国产三级精品在线不卡| 日韩美女视频一区| 欧美一区二区福利| 午夜精品久久久久久久蜜桃app| 在线码字幕一区| 久久精品国产一区二区三 | 国产在线乱码一区二区三区| 制服.丝袜.亚洲.另类.中文| 成人av网站大全| 国产欧美一区二区三区沐欲| 国产综合色一区二区三区| 亚洲乱码精品一二三四区日韩在线| 欧美精品亚洲精品| 天堂在线亚洲视频| 欧美视频一区二区三区| 国产成人在线免费| www一区二区| 精品在线观看一区二区| 亚洲一区二区三区激情| 一本大道久久a久久精二百 | 成人激情直播| 亚洲欧美电影院| 中文字幕欧美人与畜| 国内精品国产成人国产三级粉色| 日韩欧美电影一区| 丁香五月网久久综合| 一区二区在线看| 在线欧美日韩精品| 高清不卡一区二区| 欧美国产日本韩| 视频一区视频二区视频| 久久av中文字幕片| 精品成人a区在线观看| 精品久久蜜桃| 日韩二区三区四区| 日韩精品专区在线影院重磅| 国产精品白丝jk白祙| 亚洲国产精品视频| 欧美精品久久99久久在免费线 | 成人av免费在线| 国产精品免费视频一区| 亚洲日本欧美在线| 国产精品1024| 中文字幕在线播放不卡一区| 一本久道久久综合狠狠爱亚洲精品| 国产一二三精品| 中文字幕成人网| 中文字幕欧美人与畜| 成人h动漫精品| 亚洲老司机在线| 欧美精品视频www在线观看| 97av影视网在线观看| 亚洲成人动漫在线观看| 欧美一级国产精品| 另类欧美小说| 国内成人精品2018免费看| 国产日韩欧美一区二区三区乱码| 天天人人精品| 成人午夜av电影| 亚洲综合自拍偷拍| 在线不卡中文字幕播放| 黄色一区三区| 经典三级一区二区| 国产精品美日韩| 91国偷自产一区二区三区观看| 91无套直看片红桃| 视频一区二区不卡| 久久久亚洲高清| 色综合视频在线观看| 91浏览器打开| 青娱乐精品在线视频| 日本一区二区成人在线| 在线国产亚洲欧美| 国产成人精品免费视频大全最热| 日产国产高清一区二区三区 | 91小视频在线免费看| 五月婷婷激情综合网| 久久久久久久久久久黄色| 一区二区精品在线观看| 91久久久一线二线三线品牌| 日本美女视频一区二区| 国产精品另类一区| 欧美精品高清视频| 欧洲久久久久久| 99久久免费精品|