當前位置:成語大全網 - 書法字典 - 前端字典值

前端字典值

現在網站使用越來越多的圖片來提高用戶的瀏覽體驗,而這些圖片通常是以Base64的形式存儲和加載的。因此,開發工程師必須熟悉Base64。妳知道Base64是什麽嗎,為什麽用它,它有什麽優缺點嗎?

Base64是網絡中存儲和傳輸的二進制數據的常見用法。Base64的壹個字節只能表示64種情況,編碼格式中每個字節的前兩位只能是0,剩下的6位用來表示內容。

看到這裏,相信大家都能意識到,這種編碼格式無法充分利用存儲資源,效率較低。那為什麽會成為網絡中的普遍用法呢?

事實上,Base64最早應用於郵件傳輸協議。當時的郵件傳輸協議只支持ASCII字符的傳輸,用ASCII碼來表示所有的英文字符和數字以及壹些符號。這裏有壹個問題。如果郵件中只傳輸英文數字,ASCII可以直接支持。但是如果要在壹個文件中傳輸圖片、視頻等資源,這些資源轉換成ASCII碼時會有非英文的數字。而且郵件裏有很多控制字符,會變成隱形字符。非英文字符和控制字符在傳輸過程中容易出錯,影響郵件的正確傳輸。為此誕生了壹種新的編碼規則,以二進制為壹組3個字節,然後將每組的3個字節(24位)轉換成4個6位,每6位根據查找表對應壹個ASCII符號。這是Base64。

Base64將8位為單位的字節數據拆分成6位為單位的二進制片段。每個6位單元對應於Base64索引表中的壹個字符。舉個簡單的例子,下圖中M的ASCII碼是77,二進制轉換後前六位二進制數字對應的值是19,在Base64字典中是T。

當然,這裏也會出現壹個問題。如果要編碼的二進制數據不是3的倍數,就會剩下壹兩個字節。為此Base64在末尾用000000字節的值來補,這樣字節數就可以被3整除,補數用=來表示,而=的個數可以表示補了多少字節,解碼時自動去掉。總體而言,與編碼前相比,Base64編碼後的字符數增加了約33%。

前面我們也提到了Base64編碼是網站加載小圖片的主要方式。那麽Base64如何處理圖片呢?

我們都知道圖片通常以img標簽的形式在網頁中使用,img標簽的src屬性會指定壹個遠程服務器上的資源。當網頁被加載到瀏覽器中時,瀏覽器將向服務器發送對每個外部資源的資源拉取請求。但是這樣會占用大量的網絡資源,而且由於大多數瀏覽器對並發請求的數量都有限制,如果妳的網頁嵌入了過多的外部請求,很容易出現頁面加載速度慢的情況。

Base64編碼可以通過數據URL技術將圖片以字符串的形式直接嵌入到頁面中,與HTML融為壹體。這樣,在加載時可以避免對外部資源的請求。

為什麽選擇數據URL?

至於為什麽選擇數據URL技術,與傳統的外部資源引用方式相比有以下優勢:

這樣Base64編碼可以更加快捷方便的優化前端的各種圖片資源。讓我們看壹個具體的例子:

可以清楚地看到,Base64編碼將壹個圖片數據編碼成壹個字符串,並用這個字符串代替圖像地址。雖然第壹眼看上去並沒有畫面相關的內容,但毫無疑問,它最終渲染出來的是完整的畫面效果。

當然,使用數據URL對Base64圖像進行編碼並不完美,它有兩個不可忽視的缺點:

無法被瀏覽器緩存意味著每次訪問都需要重新請求資源,這對服務器的壓力很大。有沒有辦法把這些數據放到瀏覽器緩存裏?

加速裝載的技巧

其實大部分網站的背景圖都是長寬高只有幾個像素的小圖,平鋪成背景圖。通常我們將小圖片保存為GIF或PNG格式,然後在CSS的background-image屬性中引用圖片地址。但是瀏覽器本身並不關心URL裏面寫了什麽,只需要通過它獲取需要的數據。

因此,我們可以使用CSS樣式文件將圖片以數據URL的形式存儲在CSS樣式表中。這樣瀏覽器會緩存CSS文件和圖片,可以進壹步提高頁面加載的效率。

上圖是壹個簡單的用例。這樣既避免了背景圖片單獨生成壹個HTTP請求的情況,又使背景圖片和CSS文件被瀏覽器緩存,避免了每次打開網頁都加載背景圖片的情況,使用戶的瀏覽體驗更加迅速流暢。

日期URL技術與Base64編碼相結合,可以有效減少HTTP請求,讓用戶有更好的訪問體驗。這其實是我們開發過程中的壹個小技巧,希望看完能給妳帶來壹些幫助。