当前位置: 首页 > news >正文

网站上图片可以做商业作品吗成都十大景观设计公司

网站上图片可以做商业作品吗,成都十大景观设计公司,wordpress路径优化,3d建模可以自学吗曾经有这么一道面试题#xff1a;从 URL 在浏览器被被输入到页面展现的过程中发生了什么#xff1f;相信大多数准备过的同学都能回答出来#xff0c;但是如果继续问#xff1a;收到的 HTML 如果包含几十个图片标签#xff0c;这些图片是以什么方式、什么顺序、建立了多少连…曾经有这么一道面试题从 URL 在浏览器被被输入到页面展现的过程中发生了什么相信大多数准备过的同学都能回答出来但是如果继续问收到的 HTML 如果包含几十个图片标签这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢要搞懂这个问题我们需要先解决下面五个问题现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开什么情况下会断开一个 TCP 连接可以对应几个 HTTP 请求一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求再三个响应一起接收)为什么有的时候刷新页面不需要重新建立 SSL 连接浏览器对同一 Host 建立 TCP 连接到数量有没有限制第一个问题现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开什么情况下会断开在 HTTP/1.0 中一个服务器在发送完一个 HTTP 响应后会断开 TCP 链接。但是这样每次请求都会重新建立和断开 TCP 连接代价过大。所以虽然标准中没有设定某些服务器对 Connection: keep-alive 的 Header 进行了支持。意思是说完成这个 HTTP 请求之后不要断开 HTTP 请求使用的 TCP 连接。这样的好处是连接可以被重新使用之后发送 HTTP 请求的时候不需要重新建立 TCP 连接以及如果维持连接那么 SSL 的开销也可以避免两张图片是我短时间内两次访问 https://www.github.com 的时间统计头一次访问有初始化连接和 SSL 开销初始化连接和 SSL 开销消失了说明使用的是同一个 TCP 连接持久连接既然维持 TCP 连接好处这么多HTTP/1.1 就把 Connection 头写进标准并且默认开启持久连接除非请求中写明 Connection: close那么浏览器和服务器之间是会维持一段时间的 TCP 连接不会一个请求结束就断掉。所以第一个问题的答案是默认情况下建立 TCP 连接不会断开只有在请求报头中声明 Connection: close 才会在请求完成后关闭连接。第二个问题一个 TCP 连接可以对应几个 HTTP 请求了解了第一个问题之后其实这个问题已经有了答案如果维持连接一个 TCP 连接是可以发送多个 HTTP 请求的。第三个问题一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求再三个响应一起接收)HTTP/1.1 存在一个问题单个 TCP 连接在同一时刻只能处理一个请求意思是说两个请求的生命周期不能重叠任意两个 HTTP 请求从开始到结束的时间在同一个 TCP 连接里不能重叠。虽然 HTTP/1.1 规范中规定了 Pipelining 来试图解决这个问题但是这个功能在浏览器中默认是关闭的。先来看一下 Pipelining 是什么RFC 2616 中规定了A client that supports persistent connections MAY pipeline its requests (i.e., send multiple requests without waiting for each response). A server MUST send its responses to those requests in the same order that the requests were received. 一个支持持久连接的客户端可以在一个连接中发送多个请求(不需要等待任意请求的响应)。收到请求的服务器必须按照请求收到的顺序发送响应。至于标准为什么这么设定我们可以大概推测一个原因由于 HTTP/1.1 是个文本协议同时返回的内容也并不能区分对应于哪个发送的请求所以顺序必须维持一致。比如你向服务器发送了两个请求 GET/query?qA 和 GET/query?qB服务器返回了两个结果浏览器是没有办法根据响应结果来判断响应对应于哪一个请求的。Pipelining 这种设想看起来比较美好但是在实践中会出现许多问题一些代理服务器不能正确的处理 HTTP Pipelining。正确的流水线实现是复杂的。Head-of-line Blocking 连接头阻塞在建立起一个 TCP 连接之后假设客户端在这个连接连续向服务器发送了几个请求。按照标准服务器应该按照收到请求的顺序返回结果假设服务器在处理首个请求时花费了大量时间那么后面所有的请求都需要等着首个请求结束才能响应。所以现代浏览器默认是不开启 HTTP Pipelining 的。但是HTTP2 提供了 Multiplexing 多路传输特性可以在一个 TCP 连接中同时完成多个 HTTP 请求。至于 Multiplexing 具体怎么实现的就是另一个问题了。我们可以看一下使用 HTTP2 的效果。绿色是发起请求到请求返回的等待时间蓝色是响应的下载时间可以看到都是在同一个 Connection并行完成的所以这个问题也有了答案在 HTTP/1.1 存在 Pipelining 技术可以完成这个多个请求同时发送但是由于浏览器默认关闭所以可以认为这是不可行的。在 HTTP2 中由于 Multiplexing 特点的存在多个 HTTP 请求可以在同一个 TCP 连接中并行进行。那么在 HTTP/1.1 时代浏览器是如何提高页面加载效率的呢主要有下面两点维持和服务器已经建立的 TCP 连接在同一连接上顺序处理多个请求。和服务器建立多个 TCP 连接。第四个问题为什么有的时候刷新页面不需要重新建立 SSL 连接在第一个问题的讨论中已经有答案了TCP 连接有的时候会被浏览器和服务端维持一段时间。TCP 不需要重新建立SSL 自然也会用之前的。第五个问题浏览器对同一 Host 建立 TCP 连接到数量有没有限制假设我们还处在 HTTP/1.1 时代那个时候没有多路传输当浏览器拿到一个有几十张图片的网页该怎么办呢肯定不能只开一个 TCP 连接顺序下载那样用户肯定等的很难受但是如果每个图片都开一个 TCP 连接发 HTTP 请求那电脑或者服务器都可能受不了要是有 1000 张图片的话总不能开 1000 个TCP 连接吧你的电脑同意 NAT 也不一定会同意。所以答案是有。Chrome 最多允许对同一个 Host 建立六个 TCP 连接。不同的浏览器有一些区别。那么回到最开始的问题收到的 HTML 如果包含几十个图片标签这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢如果图片都是 HTTPS 连接并且在同一个域名下那么浏览器在 SSL 握手之后会和服务器商量能不能用 HTTP2如果能的话就使用 Multiplexing 功能在这个连接上进行多路传输。不过也未必会所有挂在这个域名的资源都会使用一个 TCP 连接去获取但是可以确定的是 Multiplexing 很可能会被用到。如果发现用不了 HTTP2 呢或者用不了 HTTPS(现实中的 HTTP2 都是在 HTTPS 上实现的所以也就是只能使用 HTTP/1.1)。那浏览器就会在一个 HOST 上建立多个 TCP 连接连接数量的最大限制取决于浏览器设置这些连接会在空闲的时候被浏览器用来发送新的请求如果所有的连接都正在发送请求呢那其他的请求就只能等等了看完觉得不错可以关注一下后续还会持续更新干货文章
http://www.pierceye.com/news/198689/

相关文章:

  • 宝安三网合一网站建设河北智能网站建设平台
  • 在百度上做网站有用吗wordpress环境虚拟机安装
  • 怎么做网站图片链接中元建设网站
  • 邢台做网站优化价格网站基本维护
  • 网站集群建设价格wordpress 加文章列表
  • 官方网站案例用ps做网站主页
  • 做名片的网站推广型网站建设销售
  • 河南省建设执业资格注册中心网站网站推广公司 sit
  • 来年做那个网站致富网站工作室 需要什么手续
  • 宜兴网站建设哪家好网站建设设计公司排名
  • 婚庆公司网站怎么做wordpress 首页置顶
  • 电商网站开发人员结构江苏住房和城乡建设厅网站首页
  • 快速建站的模板陕西省建设网三类人员继续教育
  • 谷歌浏览器对做网站有什么好处广州最好网站策划
  • 西安北郊做网站重庆手机软件开发
  • 怀化刚刚发生的大事台州seo服务
  • 织梦做的网站打开空白巴中网站制作公司
  • 如何使用jq做弹幕网站设计漂亮的网站
  • 电商网站是获取流量广西南宁网站排名优化
  • 网站板块设计有哪些开发网站监控推荐
  • 江西建设局网站广东网站建设类公司
  • 深圳网站制作设计艾佳工业设计
  • 怎么查看网站啥系统做的宁波网站设计制作
  • 温岭手机网站建设合肥企业展厅设计公司
  • 网站建设和制作怎么赚钱外贸网站建设服务器
  • 长沙自动化网站建设瑞安地区建设网站
  • 中山做网站费用网页制作简明教程
  • 芜湖做网站需要多少钱青岛网站建设公司怎么选
  • 塑胶 东莞网站建设企业网络推广培训
  • wordpress五分钟建站手机网站 cms