内容压缩

谁说胖子不能爱 提交于 2020-04-05 19:38:12

在数据库中存储字符串的时候,为了节约空间,可以先使用gzip对内容压缩,然后再进行存储。gzip在浏览器的交互中比较常见,记得,之前在nginx的配置上,还专门开启过gzip的支持。

gzip的压缩效率如何到底如何呢?当然,肯定跟具体的数据量级也有关系。下面,我们进行gzip压缩操作,看一下实际的效果:

准备数据:

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

首先,我们计算原始的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在处理小数据量的压缩时,其实效果并不好。

还有一点,gzip压缩后的结果是没法直接存储成string数据的。所以,引入下一个命令base64,将raw data转换成string。命令很简单,就不再赘述。介绍一下base64的编码过程,下面 Copy 阮老师的博客 :

  1. 第一步、将每三个字节作为一组,一共是24个二进制位。
  2. 第二步、将这24个二进制位分为四组,每个组有6个二进制位。
  3. 第三步、在每组前面加两个00,扩展成32个二进制位,即四个字节。
  4. 第四步、根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。

综上所诉,Base64将三个字节转化成四个字节,因此Base64编码后的文本,会比原文本大出三分之一左右。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!