HTTP 压缩对文本资源体积的影响有多大?
HTTP 压缩能显著减少文本资源的传输体积,通常可将文件大小降低至原来的 30% 左右。
压缩对带宽需求的具体影响
HTTP 压缩是提升网站性能的重要手段,对于文档而言,压缩可以将文件大小减少多达 70%,从而降低带宽容量的需求。随着算法的演进,新的压缩格式被客户端和服务器支持,使得压缩效率不断提高。在实际开发中,开发者无需自行实现压缩机制,因为浏览器和服务器通常已经内置了相关功能,关键在于确保服务器配置得当。
不同类型的数据包含的冗余程度不同,文本数据通常具有高达 60% 的冗余空间,而音频和视频等媒体类型的数据冗余率可能更高。由于这些媒体类型占用大量存储空间,优化存储和恢复空间的需求很早就显现出来。工程师为特定目的设计了优化的压缩算法,这些算法能够针对特定文件类型进行高效处理,从而在保持数据质量的同时大幅减小文件体积。
文件格式压缩与通用 HTTP 压缩的区别
文件格式压缩是针对特定数据类型进行的优化,每种数据类型都存在浪费空间的冗余。例如,文本文件通常包含大量冗余,而图像、音频和视频等媒体类型则使用大量空间存储数据。为了优化存储和恢复空间,工程师设计了针对特定文件格式的优化压缩算法。这些算法通常分为两大类:无损压缩和有损压缩。
无损压缩是指压缩和解压循环不会改变恢复的数据,恢复的数据与原始数据完全匹配。例如,GIF 和 PNG 图像格式使用无损压缩。有损压缩则会在循环中改变原始数据,但这种改变对用户来说通常是不可察觉的。Web 上的视频格式通常是有损的,JPEG 图像格式也是。有些格式如 WebP 可以同时使用无损或有损压缩,并且通常可以通过配置有损算法来调整压缩程度和质量。
端到端压缩与连接级压缩的机制差异
端到端压缩是网站性能提升最大的领域,它指的是服务器对消息体进行压缩,直到到达客户端之前保持不变。无论中间节点如何,它们都不会改变消息体。现代浏览器和服务器都支持端到端压缩,唯一需要协商的是使用的压缩算法。目前相关的算法主要是 gzip 和 br。浏览器和服务器使用主动内容协商来选择算法,浏览器发送包含支持的算法及其优先级的 Accept-Encoding 头,服务器选择一种算法压缩响应体,并通过 Content-Encoding 头告知浏览器所选算法。
连接级压缩(跳步压缩)与端到端压缩类似,但有一个根本区别:它不是在服务器上创建特定的表示形式,而是在客户端和服务器之间路径上的任意两个节点之间的消息体上进行压缩。连接上的连续中间节点可能应用不同的压缩。为此,HTTP 使用类似于端到端压缩的内容协商机制:传输请求的节点使用 TE 头表明其意愿,另一个节点选择合适的方法,应用它,并通过 Transfer-Encoding 头指示其选择。在实际应用中,这种压缩对服务器和客户端是透明的,且很少使用。
重复压缩的负面影响与配置建议
由于压缩算法通常需要字典来增加初始大小,如果对已经压缩过的文件再次进行压缩,其开销可能会高于额外的压缩收益,导致文件反而变大。因此,对于已经压缩过的文件(如图片、音频和视频),不建议再次进行压缩。为了获得更好的网站性能,理想的做法是在保持可接受质量的前提下尽可能多地压缩,但对于图像,建议使用专门的工具来压缩,以确保达到 Web 优化的要求。
有损压缩算法通常比无损压缩算法更高效。对于文本资源,启用端到端压缩可以显著减少传输体积,从而加快加载速度。开发者应确保服务器配置正确,以支持 gzip 或 br 等压缩算法,从而为用户提供更快的访问体验。
资料与延伸阅读
你可以通过以下原始资料核对文中概念,并继续深入阅读。