base64的好處是什么?今天在跟小伙伴討論這個問題,要是全站用Php把圖片轉為base64行不行?
1. 提升性能: 網頁上的每一個圖片,都是需要消耗一個 http 請求下載而來的, 圖片的下載始終都要向服務器發出請求,要是圖片的下載不用向服務器發出請求,base64可以隨着 HTML 的下載同時下載到本地.減少https請求。
2. 加密: 讓用戶一眼看不出圖片內容 , 只能看到編碼。
3. 方便引用: 在多個文件同時使用某些圖片時, 可以把圖片轉為base64格式的文件, 把樣式放在全局中, 比如common.css, 以后在用的時候就可以直接加類名, 二不需要多層找文件路徑, 會提升效率
/**
* 圖片轉base64
* @param ImageFile String 圖片路徑
* @return 轉為base64的圖片
*/
function Base64EncodeImage($ImageFile) {
if(file_exists($ImageFile) || is_file($ImageFile)){
$base64_image = '';
$image_info = getimagesize($ImageFile);
$image_data = fread(fopen($ImageFile, 'r'), filesize($ImageFile));
$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
return $base64_image;
}
else{
return false;
}
}
base64圖片實際應用
<img src="data:image/jpeg;base64,/9j/4AAQS……"/>
不過base64也有缺點:
1)base64格式的文本內容較多,存儲在數據庫中增大了數據庫服務器的壓力;
(2)網頁加載圖片雖然不用訪問服務器了,但因為base64格式的內容太多,所以加載網頁的速度會降低,可能會影響用戶的體驗。
(3)base64無法緩存,要緩存只能緩存包含base64的文件,比如js或者css,這比直接緩存圖片要差很多,而且一般HTML改動比較頻繁,所以等同於得不到緩存效益。
總結:因為base64的使用缺點,所以一般圖片小於10kb的時候,我們才會選擇使用base64圖片,比如一些表情圖片,太大的圖片轉換成base64得不償失。當然,極端情況極端考慮。
