LucKy_one

Always aiming higher


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

GZIP is not enough!网站压缩讲座总结

发表于 2014-05-22 更新于 2014-08-03
看了一个关于网站压缩的google视频讲座,总结下。

看了一个关于网站压缩的google视频讲座,总结下。

讲座地址:GZIP is not enough! (YouTube..需翻墙)
PPT:PPT


  • 虽然一个网站占主要大小的是图片,但HTML,JS,CSS的大小也是在不断增加的,所以文本相关的压缩是十分重要的。

  • 推广了一下google的图片格式webp,既可以想PNG一样透明,也可以像JPEG一样有损压缩,甚至可以像GIF一样包含动画。

  • 随着各种新技术的诞生,一些JS的体积十分巨大,压缩是必不可少的。

  • 讲了讲Minification和Compression的区别,前者仅仅是通过减少可读性来缩小体积,而后者则是重新编码。

  • GZIP原理:LZ77(字典编码的一种)+HUFFMAN(哈夫曼编码)

  • 几种压缩算法:GZIP,LZMA,LPAQ,BZIP2互有优劣,但是后面讲了因为整个互联网上可以说只有GZIP是普及了,使用其他压缩算法可能会带来问题。

  • 进行预处理,如[0,1,2,3,4,5,6,7,8,9]用GZIP进行压缩体积不会缩小甚至会变大,但是进行delta编码成[0,1,1,1,1,1,1,1,1]转换成差值,重复元素就会很多,压缩也就会很有效率。

  • GZIP会使一些小文件膨胀。

  • PNG的压缩算法和GZIP是一个原理,图片的细微差距会导致压缩体积的巨大区别。

  • 可以自己使用7ZIP或Zopfli进行压缩而不是让系统自己压缩,会有大约10%+的优势。

  • 网站经常使用JSON来传输数据,通过变换JSON(Transpose JSON)进而缩小体积,例如:

    {
     “name”: “alex”,
     “pos”: “AUS”,
    },
    {
     “name”: “Colt”,
     “pos”: “USA”,
    }

    转换成:

    {
     “name”: [“alex”, “colt”],
     “pos”: [“AUS”, “USA”],
    }

    不光本身体积小了,也有利于压缩。

  • 通过Dense Codes算法预处理来优化压缩(Compression boosting)。测试结果Dense Codes+7-Zip效果最好

  • 使用Delta.js来传输文件新旧版本之间的的差值(Delta compression)。

  • 文件间的水平差值,例如需要传输三个文件file1,file2,file3可以传输fil1,file2-file1,file3-file2。


最后结尾:
GZIP is not enough
It’s up to you to control your data

个人一句话总结:基本来说没有万能方法,挨个试一遍选最小的方案吧。。。

# web # GZIP
npm package.json中的dependencies和devDependencies的区别
向Windows8应用推送通知(Toast)并响应点击通知事件

Liu Tianhe

喜欢金融,喜欢科技
31 日志
29 标签
RSS
GitHub E-Mail
© 2014 – 2022 Liu Tianhe
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Mist v7.3.0