前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP/1.1任你有万般不好,但我也要好好待你

HTTP/1.1任你有万般不好,但我也要好好待你

作者头像
shysh95
发布2021-11-16 13:40:01
2900
发布2021-11-16 13:40:01
举报
文章被收录于专栏:shysh95shysh95

摘要

  • 避免HTTP请求
  • 减少HTTP请求次数
  • 减少HTTP响应的大小

避免HTTP请求

如何避免HTTP请求

答案就是缓存。我们通过将HTTP响应的数据缓存到本地,下次请求时直接从本地磁盘读取,避免网络IO的耗时。

如何缓存

URL为key,响应作为value

缓存有效期如何界定

服务器在返回HTTP响应时,会估算一个过期时间,并把该信息放在响应头中,客户端在收到响应头时返现缓存的响应是过期的,会重新发送网络请求。

缓存有效期已过,但资源实际未变更如何优化

客户端在重新发起请求时会在请求的etag的头中带上第一次请求的响应头部中的摘要(唯一资源标识),服务器收到请求后会比较本地资源摘要和请求中的摘要是否一致:

  • 不一致,客户端缓存无效,返回最新的资源
  • 一致,客户端缓存依然可以使用,仅返回304响应,响应中不包含响应体

减少请求次数

减少请求次数的方式

  • 减少重定向次数
  • 合并请求
  • 延迟请求

减少重定向次数

重定向就意味需要发送新的HTTP请求,意味着额外的网络耗时。如果我们使用了代理服务器,可以将重定向的工作交给代理服务器,这样可以减少1次客户端的重定向(通过代理服务器完成了)。

合并请求

如果多个小文件的请求具有相同的头部,可以将这几个小文件的请求合并一起请求,虽然传输的资源一样,但减少了头部的重复传输。假设我们采用的是HTTP/1.1,合并请求还会减少TCP的连接数量

合并请求的方式有哪几种

  • CSS Image Sprites技术会把多个小图片合并成一个大图片,这样就可以一次请求获得,然后再根据CSS数据将大图片切割成小图片
  • 图片的二进制数据我们可以对其base64直接返回,客户端收到以后可以直接解码显示图片,不用再使用单独的链接发起HTTP请求获取图片内容

合并请求的缺点

合并请求的本质是合并资源,那么多个资源中的一个发生变更,那么必须要要重新下载所有资源,这也会造成额外的网络开销,

延迟发送

需要的时候再发送请求获取。

减少HTTP响应数据的大小

如何减少相应数据的大小

压缩

压缩的大体种类分为

  • 无损压缩
  • 有损压缩

什么是无损压缩

无损压缩是指经过压缩后,信息不能丢失,可以完全恢复到压缩之前。适合文本文件、可执行程序和代码源文件。

常见的无损压缩算法:

  • gzip
  • deflate
  • br

什么是有损压缩

有损压缩是指经过压缩后,会丢失部分信息,解压的数据可能与原始数据存在些许差异。适合音频、视频、图片等资源,牺牲一些质量来减少数据量。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员修炼笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档