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

2 如何写一份详细的网站开发方案阿里企业邮箱电话

2 如何写一份详细的网站开发方案,阿里企业邮箱电话,环境网站模板,南昌做任务的网站一、HTTP基础 1.1 HTTP定义 HTTP协议#xff08;HyperTextTransferProtocol#xff0c;超文本传输协议#xff09;是用于从WWW服务器传输超文本到本地浏览器的传输协议。 1.2 HTTP发展史 1.3 HTTP1.0 早先1.0的HTTP版本#xff0c;是一种无状态、无连接的应用层协议。 …一、HTTP基础 1.1 HTTP定义 HTTP协议HyperTextTransferProtocol超文本传输协议是用于从WWW服务器传输超文本到本地浏览器的传输协议。 1.2 HTTP发展史 1.3 HTTP1.0 早先1.0的HTTP版本是一种无状态、无连接的应用层协议。 HTTP1.0规定浏览器和服务器保持短暂的连接浏览器的每次请求都需要与服务器建立一个TCP连接服务器处理完成后立即断开TCP连接无连接服务器不跟踪每个客户端也不记录过去的请求无状态。 这种无状态性可以借助cookie/session机制来做身份认证和状态记录。而下面两个问题就比较麻烦了。 首先无连接的特性导致最大的性能缺陷就是无法复用连接。每次发送请求的时候都需要进行一次TCP的连接而TCP的连接释放过程又是比较费事的。这种无连接的特性会使得网络的利用率非常低。 其次就是队头阻塞head of line blocking。由于HTTP1.0规定下一个请求必须在前一个请求响应到达之前才能发送。假设前一个请求响应一直不到达那么下一个请求就不发送同样的后面的请求也给阻塞了。 为了解决这些问题HTTP1.1出现了。 1.4 HTTP的基本优化方向 影响一个 HTTP 网络请求的因素主要有两个带宽和延迟。 带宽如果说我们还停留在拨号上网的阶段带宽可能会成为一个比较严重影响请求的问题但是现在网络基础建设已经使得带宽得到极大的提升我们不再会担心由带宽而影响网速那么就只剩下延迟了。 延迟 浏览器阻塞HOL blocking浏览器会因为一些原因阻塞请求。浏览器对于同一个域名同时只能有 4 个连接这个根据浏览器内核不同可能会有所差异超过浏览器最大连接数限制后续请求就会被阻塞。 DNS 查询DNS Lookup浏览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是 DNS。这个通常可以利用DNS缓存结果来达到减少这个时间的目的。 建立连接Initial connectionHTTP 是基于 TCP 协议的浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文达到真正的建立连接但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显慢启动则对文件类大请求影响较大。 二、HTTP1.0和HTTP1.1的一些区别 HTTP1.0最早在网页中使用是在1996年那个时候只是使用一些较为简单的网页上和网络请求上而HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中同时HTTP1.1也是当前使用最为广泛的HTTP协议。 主要区别主要体现在 对于HTTP1.1不仅继承了HTTP1.0简单的特点还克服了诸多HTTP1.0性能上的问题。 首先是长连接HTTP1.1增加了一个Connection字段通过设置Keep-Alive可以保持HTTP连接不断开避免了每次客户端与服务器请求都要重复建立释放建立TCP连接提高了网络的利用率。如果客户端想关闭HTTP连接可以在请求头中携带Connection: false来告知服务器关闭请求。 其次是HTTP1.1支持请求管道化pipelining。基于HTTP1.1的长连接使得请求管道化成为可能。管线化使得请求能够“并行”传输。举个例子来说假如响应的主体是一个html页面页面中包含了很多img这个时候keep-alive就起了很大的作用能够进行“并行”发送多个请求。注意这里的“并行”并不是真正意义上的并行传输具体解释如下。 需要注意的是服务器必须按照客户端请求的先后顺序依次回送相应的结果以保证客户端能够区分出每次请求的响应内容。 也就是说HTTP管道化可以让我们把先进先出队列从客户端请求队列迁移到服务端响应队列。 HTTP 1.1 如图所示客户端同时发了两个请求分别来获取html和css假如说服务器的css资源先准备就绪服务器也会先发送html再发送css。 换句话来说只有等到html响应的资源完全传输完毕后css响应的资源才能开始传输。也就是说不允许同时存在两个并行的响应。 可见HTTP1.1还是无法解决队头阻塞head of line blocking的问题。同时“管道化”技术存在各种各样的问题所以很多浏览器要么根本不支持它要么就直接默认关闭并且开启的条件很苛刻…而且实际上好像并没有什么用处。 那我们在谷歌控制台看到的并行请求又是怎么一回事呢 如图所示绿色部分代表请求发起到服务器响应的一个等待时间而蓝色部分表示资源的下载时间。按照理论来说HTTP响应理应当是前一个响应的资源下载完了下一个响应的资源才能开始下载。而这里却出现了响应资源下载并行的情况。这又是为什么呢 其实虽然HTTP1.1支持管道化但是服务器也必须进行逐个响应的送回这个是很大的一个缺陷。实际上现阶段的浏览器厂商采取了另外一种做法它允许我们打开多个TCP的会话。也就是说上图我们看到的并行其实是不同的TCP连接上的HTTP请求和响应。这也就是我们所熟悉的浏览器对同域下并行加载6~8个资源的限制。而这才是真正的并行 此外HTTP1.1还加入了缓存处理强缓存和协商缓存新的字段如cache-control支持断点传输以及增加了Host字段使得一个服务器能够用来创建多个Web站点。 HTTPS与HTTP的一些区别 HTTPS协议需要到CA申请证书一般免费证书很少需要交费。HTTP协议运行在TCP之上所有传输的内容都是明文HTTPS运行在SSL/TLS之上SSL/TLS运行在TCP之上所有传输的内容都经过加密的。HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样前者是80后者是443。HTTPS可以有效的防止运营商劫持解决了防劫持的一个大问题。 HTTP 2.0 vs HTTP 1.0 性能 HTTP 2.0 的出现相比于 HTTP 1.x 大幅度的提升了 web 性能。 这是 Akamai 公司建立的一个官方的演示用以说明 HTTP/2 相比于之前的 HTTP/1.1 在性能上的大幅度提升。 同时请求 379 张图片从Load time 的对比可以看出 HTTP/2 在速度上的优势。 三、HTTP 1.1 和 HTTP 2.0 区别 后面我们将通过几个方面来说说HTTP 2.0 和 HTTP1.1 区别并且和你解释下其中的原理。 3.1 二进制分帧 HTTP2.0通过在应用层和传输层之间增加一个二进制分帧层突破了HTTP1.1的性能限制、改进传输性能。 可见虽然HTTP2.0的协议和HTTP1.x协议之间的规范完全不同了但是实际上HTTP2.0并没有改变HTTP1.x的语义。 简单来说HTTP2.0只是把原来HTTP1.x的header和body部分用frame重新封装了一层而已。 3.2 多路复用 下面是几个概念 流stream已建立连接上的双向字节流。消息与逻辑消息对应的完整的一系列数据帧。帧frameHTTP2.0通信的最小单位每个帧包含帧头部至少也会标识出当前帧所属的流stream id。 从图中可见所有的HTTP2.0通信都在一个TCP连接上完成这个连接可以承载任意数量的双向数据流。 每个数据流以消息的形式发送而消息由一或多个帧组成。这些帧可以乱序发送然后再根据每个帧头部的流标识符stream id重新组装。 举个例子每个请求是一个数据流数据流以消息的方式发送而消息又分为多个帧帧头部记录着stream id用来标识所属的数据流不同属的帧可以在连接中随机混杂在一起。接收方可以根据stream id将帧再归属到各自不同的请求当中去。 另外多路复用连接共享可能会导致关键请求被阻塞。HTTP2.0里每个数据流都可以设置优先级和依赖优先级高的数据流会被服务器优先处理和返回给客户端数据流还可以依赖其他的子数据流。 可见HTTP2.0实现了真正的并行传输它能够在一个TCP上进行任意数量HTTP请求。而这个强大的功能则是基于“二进制分帧”的特性。 多路复用允许单一的 HTTP/2 连接同时发起多重的请求-响应消息。看个例子 整个访问流程第一次请求index.html页面,之后浏览器会去请求style.css和scripts.js的文件。左边的图是顺序加载两个个文件的右边则是并行加载两个文件。 我们知道HTTP底层其实依赖的是TCP协议那问题是在同一个连接里面同时发生两个请求响应着是怎么做到的 首先你要知道TCP连接相当于两根管道一个用于服务器到客户端一个用于客户端到服务器管道里面数据传输是通过字节码传输传输是有序的每个字节都是一个一个来传输。 例如客户端要向服务器发送Hello、World两个单词只能是先发送Hello再发送World没办法同时发送这两个单词。不然服务器收到的可能就是HWeolrllod注意是穿插着发过去了但是顺序还是不会乱。这样服务器就懵b了。 接上面的问题能否同时发送Hello和World两个单词能当然也是可以的可以将数据拆成包给每个包打上标签。发的时候是这样的①H ②W ①e ②o ①l ②r ①l ②l ①o ②d。这样到了服务器服务器根据标签把两个单词区分开来。实际的发送效果如下图 HTTP 性能优化的__关键并不在于高带宽而是低延迟__。TCP 连接会随着时间进行自我「调谐」起初会限制连接的最大速度如果数据成功传输会随着时间的推移提高传输的速度。这种调谐则被称为 TCP 慢启动。由于这种原因让原本就具有突发性和短时性的 HTTP 连接变的十分低效。 HTTP/2 通过让所有数据流共用同一个连接可以更有效地使用 TCP 连接让高带宽也能真正的服务于 HTTP 的性能提升。 总结下多路复用技术单连接多资源的方式减少服务端的链接压力,内存占用更少,连接吞吐量更大由于减少TCP 慢启动时间提高传输的速度 3.3 首部压缩 为什么要压缩在 HTTP/1 中HTTP 请求和响应都是由「状态行、请求 / 响应头部、消息主体」三部分组成。一般而言消息主体都会经过 gzip 压缩或者本身传输的就是压缩过后的二进制文件例如图片、音频但状态行和头部却没有经过任何压缩直接以纯文本传输。 随着 Web 功能越来越复杂每个页面产生的请求数也越来越多导致消耗在头部的流量越来越多尤其是每次都要传输 UserAgent、Cookie 这类不会频繁变动的内容完全是一种浪费。 我们再用通俗的语言解释下压缩的原理。头部压缩需要在支持 HTTP/2 的浏览器和服务端之间: 维护一份相同的静态字典Static Table包含常见的头部名称以及特别常见的头部名称与值的组合维护一份相同的动态字典Dynamic Table可以动态的添加内容支持基于静态哈夫曼码表的哈夫曼编码Huffman Coding 静态字典的作用有两个 对于完全匹配的头部键值对例如 “:method :GET”可以直接使用一个字符表示对于头部名称可以匹配的键值对例如 “cookie :xxxxxxx”可以将名称使用一个字符表示。 HTTP/2 中的静态字典如下以下只截取了部分 同时浏览器和服务端都可以向动态字典中添加键值对之后这个键值对就可以使用一个字符表示了。需要注意的是动态字典上下文有关需要为每个 HTTP/2 连接维护不同的字典。在传输过程中使用使用字符代替键值对大大减少传输的数据量。 3.4 HTTP2支持服务器推送 服务端推送是一种在客户端请求之前发送数据的机制。当代网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP/1.x中这些资源每一个都必须明确地请求。这可能是一个很慢的过程。浏览器从获取HTML开始然后在它解析和评估页面的时候增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求网络经常是空闲的和未充分使用的。 为了改善延迟HTTP/2引入了server push它允许服务端推送资源给浏览器在浏览器明确地请求之前。一个服务器经常知道一个页面需要很多附加资源在它响应浏览器第一个请求的时候可以开始推送这些资源。这允许服务端去完全充分地利用一个可能空闲的网络改善页面加载时间。 3.5HTTP/2采用二进制格式而非文本格式 见 3.1 二进制分帧 参考https://www.hollischuang.com/archives/2066
http://www.huolong8.cn/news/393665/

相关文章:

  • 在线网站源码提取做网站需要租服务器么
  • 网站开发一般要用到哪些软件南昌建筑工程公司
  • 做美容有哪些网站上海软件外包公司有哪些
  • 上海电子商城网站制作网页qq登陆保护
  • 百度网站外链发布平台华为官方手机商城
  • 社交网站wap模板网站建设毕业设计论文
  • 大学做网站有哪些一个公司多个网站做优化
  • 企业商务网站的技术网站建设的主要工作流程
  • 如何建立自己的网站免费国外域名备案
  • 从零学建设网站018马经商派商城网站建设公司
  • 企业网站群建设规范易烊千玺网页设计模板代码
  • 全栈网站开发流行框架字体设计 创意免费
  • 广西省建设厅网站广州建站快车
  • 网站改版原因网络营销渠道
  • 做汽配网站需要多少钱株洲网站制作公司
  • 鹤壁百度网站建设360建筑网发布的信息怎么删除
  • 想搭建网站学什么昆明最新消息今天
  • 所得税汇算清缴在哪个网站做手机兼职招聘
  • 做培训网站前端保山公司做网站
  • 深圳p2p网站建设商业网站怎么建设
  • 四川做网站设计公司价格首页html模板
  • wap网站和app的区别石家庄 网站建设 15369356722
  • 简洁网站首页模板家居定制类网站建设
  • 哈尔滨网站建设口碑好wordpress+电脑微信登陆不了
  • vue做网站前台专业的微网站哪家好
  • c2c网站怎么做网站开发 京东
  • 做亚马逊学英语有什么网站吗qq浏览网页版进入
  • 3维网站制作技术有什么字体设计网站好
  • 定制网站建设提供商宁海做网站
  • 成品网站软件大全下载做的比较好的海鲜网站