数据压缩是提高 Web 站点性能的一种重要手段。对有些文件来说,高达 70% 的压缩比率可以大大降低对带宽的需求。在实际应用时,web 开发者不需要亲手实现压缩机制,浏览器及服务器都已经将其实现了,不过他们需要确保在服务器段进行合理的配置。
数据压缩经常发生在三个层面:
- 某些格式的文件采用特定的优化算法进行压缩。
- 在 HTTP 层面资源以压缩的形式进行端到端传输。
- 压缩还可能发生在 HTTP 连接的两个节点之间。
文件格式压缩
每一种文件类型都会存在冗余。如一个典型的文本文件存在 60% 的冗余,而音频或视频文件来说这个比例会更高。为了减少文件冗余所占用的空间,工程师们设计了针对指定文件格式的压缩算法。
压缩算法分类两类:
- 无损压缩
- 有损压缩
无损压缩在经历“压缩-解压缩”的过程并不会更改原始数据内容。gif
和 png
使用的是无损压缩。而有损压缩在经历“压缩-解压缩”的过程则会更改原始数据内容。Web 视频格式、jpeg
格式的图片都是有损压缩。一般情况下有损压缩比无损压缩更高效。
有些格式既可以应用无损压缩又可以应用有损压缩,如 webp
,压缩算法通常可以通过压缩比例来进行配置。
对于图片来说,工具生成的图片其优化程度并不足以应用在 Web 的场景,这时候可以使用一些针对压缩场景的工具来对图片进行优化。
端到端压缩
端到端压缩是 Web 站点提升性能最大的地方。端到端压缩指的是