内容压缩

在数据库中存储字符串的时候,为了节约空间,能够先使用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

相关文章
相关标签/搜索