我试图理解CSS精灵如何提高网站性能?
为什么下载多个小图片比下载一个包含这些小图片的单个图片更慢,即使单个图片的总大小等于这些小图片的总和?
我试图理解CSS精灵如何提高网站性能?
为什么下载多个小图片比下载一个包含这些小图片的单个图片更慢,即使单个图片的总大小等于这些小图片的总和?
了解为什么HTTP请求的开销如此之大非常重要。
简单来说,HTTP请求的基本形式包括打开一个套接字,将请求发送到打开的套接字上并读取响应。
为了打开一个套接字,客户端的TCP/IP协议栈向服务器发送一个TCP SYN数据包。服务器会以SYN-ACK作出回应,客户端再以ACK作出回应。
因此,在您发送任何应用程序数据之前,您必须至少等待一个半往返到服务器。
然后客户端需要发送请求,等待服务器解析请求,查找所请求的数据,将其发送回来 - 这是另一个往返加上一些服务器端开销(希望是小开销,虽然我见过一些慢服务器)再加上传输实际数据的时间,这是最好的情况,假设没有网络拥塞,否则会导致数据包丢失和重传。
每次有机会避免这种情况,都应该尽量避免。
现代浏览器会尝试同时发出多个请求,以减少某些开销。HTTP请求理论上可以在同一个套接字上执行,这会让情况好一点。但总体而言,网络往返对性能不利,应该尽量避免。
除了上述原因外,我发现它们更容易使用。如果您更新图像,则只需修改和上传一个文件,并在代码中更改一个URL。