摘要
避免HTTP请求
如何避免HTTP请求
答案就是缓存。我们通过将HTTP响应的数据缓存到本地,下次请求时直接从本地磁盘读取,避免网络IO的耗时。
如何缓存
URL为key,响应作为value
缓存有效期如何界定
服务器在返回HTTP响应时,会估算一个过期时间,并把该信息放在响应头中,客户端在收到响应头时返现缓存的响应是过期的,会重新发送网络请求。
缓存有效期已过,但资源实际未变更如何优化
客户端在重新发起请求时会在请求的etag的头中带上第一次请求的响应头部中的摘要(唯一资源标识),服务器收到请求后会比较本地资源摘要和请求中的摘要是否一致:
减少请求次数
减少请求次数的方式
减少重定向次数
重定向就意味需要发送新的HTTP请求,意味着额外的网络耗时。如果我们使用了代理服务器,可以将重定向的工作交给代理服务器,这样可以减少1次客户端的重定向(通过代理服务器完成了)。
合并请求
如果多个小文件的请求具有相同的头部,可以将这几个小文件的请求合并一起请求,虽然传输的资源一样,但减少了头部的重复传输。假设我们采用的是HTTP/1.1,合并请求还会减少TCP的连接数量
合并请求的方式有哪几种
合并请求的缺点
合并请求的本质是合并资源,那么多个资源中的一个发生变更,那么必须要要重新下载所有资源,这也会造成额外的网络开销,
延迟发送
需要的时候再发送请求获取。
减少HTTP响应数据的大小
如何减少相应数据的大小
压缩
压缩的大体种类分为
什么是无损压缩
无损压缩是指经过压缩后,信息不能丢失,可以完全恢复到压缩之前。适合文本文件、可执行程序和代码源文件。
常见的无损压缩算法:
什么是有损压缩
有损压缩是指经过压缩后,会丢失部分信息,解压的数据可能与原始数据存在些许差异。适合音频、视频、图片等资源,牺牲一些质量来减少数据量。