內容壓縮

在數據庫中存儲字符串的時候,爲了節約空間,能夠先使用gzip對內容壓縮,而後再進行存儲。gzip在瀏覽器的交互中比較常見,記得,以前在nginx的配置上,還專門開啓過gzip的支持。html

gzip的壓縮效率如何到底如何呢?固然,確定跟具體的數據量級也有關係。下面,咱們進行gzip壓縮操做,看一下實際的效果:nginx

準備數據:數據庫

{"name":"道道法","age":26,"blogs":[100,201,333]}

首先,咱們計算原始的json串佔用空間的大小json

# 使用wc命令,-c屬性表示,輸出內容的byte數,輸出值:44
echo "{"name":"道道法","age":26,"blogs":[100,201,333]}" | wc -c

接下來,咱們對數據進行gzip處理,看一下效果:瀏覽器

# 輸出值:63,這確實是一個失敗的例子
echo "{"name":"道道法","age":26,"blogs":[100,201,333]}" | gzip -f | wc -c

經過上面的效果能夠看出,gzip在處理小數據量的壓縮時,其實效果並很差。bash

還有一點,gzip壓縮後的結果是無法直接存儲成string數據的。因此,引入下一個命令base64,將raw data轉換成string。命令很簡單,就再也不贅述。介紹一下base64的編碼過程,下面 Copy 阮老師的博客 :編碼

  1. 第一步、將每三個字節做爲一組,一共是24個二進制位。
  2. 第二步、將這24個二進制位分爲四組,每一個組有6個二進制位。
  3. 第三步、在每組前面加兩個00,擴展成32個二進制位,即四個字節。
  4. 第四步、根據下表,獲得擴展後的每一個字節的對應符號,這就是Base64的編碼值。

綜上所訴,Base64將三個字節轉化成四個字節,所以Base64編碼後的文本,會比原文本大出三分之一左右。code

相關文章
相關標籤/搜索