http请求

Yahoo!团队实践分享:网站性能优化的34条黄金守则

自古美人都是妖i 提交于 2020-03-02 06:13:36
Yahoo! 的 Exceptional Performance 团队为改善 Web 性能带来最佳实践。他们为此进行了一系列的实验、开发了各种工具、写了大量的文章和博客并在各种会议上参与探讨。最佳实践的核心就是旨在提高网站性能。 原文地址: http://developer.yahoo.com/performance/rules.html Excetional Performance 团队总结出了一系列可以提高网站速度的方法。可以分为 7 大类 34 条。 包括 内容 、 服务器 、 CSS 、 JavaScript 、 Cookie 、 图片 、 移动应用 ,七部分。 其中内容部分一共十条建议: 一、内容部分 尽量减少 HTTP 请求 减少 DNS 查找 避免跳转 缓存 Ajxa 推迟加载 提前加载 减少 DOM 元素数量 用域名划分页面内容 使 frame 数量最少 避免 404 错误 1 、尽量减少 HTTP 请求次数 终端用户响应的时间中,有 80% 用于下载各项内容。这部分时间包括下载页面中的图像、样式表、脚本、 Flash 等。通过减少页面中的元素可以减少 HTTP 请求的次数。这是提高网页速度的关键步骤。 减少页面组件的方法其实就是简化页面设计。那么有没有一种方法既能保持页面内容的丰富性又能达到加快响应时间的目的呢?这里有几条减少 HTTP

HTTP 204/205状态响应&HEAD请求

自古美人都是妖i 提交于 2020-03-02 05:47:12
HTTP 304/200(from cache) 静态资源缓存原理 Http 206 文件断点续传下载原理 一.http 204/205状态响应 HTTP 204(no content)表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页面。 HTTP 205(reset content) 表示响应执行成功,重置页面(Form表单),方便用户下次输入。 使用ajax时,当只需要知道响应成功或失败的情况,则可以使用状态码HTTP 204来代替HTTP 200,减少多余的数据传输。 二.HEAD请求 HEAD请求方法 第一个请求返回了HTTP/200,但你应该注意到了,服务器并没有返回响应体.如果你在Inspectors选项卡中查看一下,就会发现客户端使用的是 HEAD 请求方法.HEAD方法允许客户端仅向服务器请求某个资源的响应头,而不要真正的下载该资源本身.服务器返回的响应头应该和客户端使用GET方法请求该资源时返回的请求头相同,比起GET方法,只是省略了响应体. 从上图中可以看出,如果客户端使用GET而不是HEAD方法请求该资源,服务器就应该会返回6623字节大小的响应体.还可以看出,该资源的类型为 text/html 以及它的编码为 UTF-8 .客户端可以使用HEAD请求来收集相关信息以确定如何操作该资源.例如,在IE中,如果一个 OBJECT 元素缺少 TYPE

HTTP请求和响应格式

泄露秘密 提交于 2020-03-02 05:04:50
HTTP请求格式: <request-line> <headers> <blank line> [<request-body>] 说明:第一行必须是一个请求行(request-line),用来说明请求类型,要访问的资源以及所使用的HTTP版本. 紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息. 之后是一个空行. 再后面可以添加任意的其他数据[称之为主体(body)]. 例1 GET请求: GET / HTTP/1.1 Accept: */* Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Host: www.google.cn Connection: Keep-Alive 说明:请求的第一部分说明了该请求是一个GET请求.该行的第二部分是一个斜杠(/),用来说明请求的是该域名的根目录.该行的最后一部分说明使用的是HTTP1.1版本(另一个可选荐是1.0). 第2行是请求的第一个首部,HOST将指出请求的目的地.User-Agent

TCP的keepalive&HTTP的keep-alive

我怕爱的太早我们不能终老 提交于 2020-03-02 03:52:20
最近工作中遇到一个问题,想把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器。 Client可以是浏览器也可以是一个客户端程序。一般情况下,这种架构不会出现问题,但是如果Client端把请求发送给Nginx,Nginx的后端需要一段时间才能返回结果,超过1分30秒就会有问题,使用LVS作为负载均衡设备看到的现象就是1分30秒之后, Client和Nginx链接被断开,没有数据返回。原因是LVS默认保持TCP的Session为90s,超过90s没有TCP报文在链接上传输,LVS就会给两端发送RESET报文断开链接。LVS这么做的原因相信大家都知道一二,我所知道的原因主要有两点: 1.节省负载均衡设备资源,每一个TCP/UDP的链接都会在负载均衡设备上创建一个Session的结构, 链接如果一直不断开,这种Session结构信息最终会消耗掉所有的资源,所以必须释放掉。 2.另外释放掉能保护后端的资源,如果攻击者通过空链接,链接到Nginx上,如果Nginx没有做合适 的保护,Nginx会因为链接数过多而无法提供服务。 这种问题不只是在LVS上有,之前在商用负载均衡设备F5上遇到过同样的问题,F5的Session断开方式和LVS有点区别,F5不会主动发送RESET给链接的两端

浅谈HTTP中Get与Post的区别

♀尐吖头ヾ 提交于 2020-03-02 03:42:39
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的 查, 改, 增, 删4个操作。到这里,大家应该有个大概的了解了,GET一般用于 获取/查询资源信息,而POST一般用于 更新资源信息。    1 .根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。   (1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。   * 注意:这里安全的含义仅仅是指是非修改信息。   (2).幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下 幂等 这个概念:    幂等 (idempotent、idempotence)是一个数学或计算机学概念,常见于抽象代数中。   幂等有一下几种定义:   对于单目运算,如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的,那么我们就称该运算是幂等的。比如绝对值运算就是一个例子,在实数集中,有 abs(a) = abs(abs(a))。  

HTTP请求报文和响应报文

≯℡__Kan透↙ 提交于 2020-03-01 14:13:05
HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。HTTP有两类报文: 请求报文 和 响应报文 。 1、请求报文 一个HTTP请求报文由 请求行(request line )、 请求头部(header) 、 空行 和 请求数据 4个部分组成,下图给出了请求报文的一般格式。 (1)请求行 请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。 HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。 GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。 POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据。 (2)请求头部 请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔

图解HTTP学习(2):简单的HTTP协议

我的未来我决定 提交于 2020-03-01 14:12:39
1. HTTP协议用于客户端和服务器端之间的通信 规定:请求从客户端发出,服务器端响应请求,即客户端开始建立通信,报文格式如下 (1)请求报文格式;请求方法+请求URI+协议版本+可选的请求首部字段+内容实体 (2)响应报文格式:协议版本+状态吗+解释状态码的原因短语+可选的响应首部字段以及实体主体 2. HTTP是不保存状态的协议 (1)无状态协议,即不做持久化处理,之前的访问信息不予记录,每一次都是新的请求,后为了保持状态引入了cookie技 术。 (2)HTTP请求URI定位资源,如果不是访问特定资源而是对服务器本身发起请求,可以使用*代替URI 3. 告知服务器意图的HTTP方法 (1)GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。如果请求资源是文本,原样返回;如果是CGI,返回执行后的结果 (2)POST:用来传输实体的主体(get也可以但一般不用),主要目的并不是获取响应的主体内容,当客户端给服务器提供信息较多时可以使用POST 方法,POST

HTTP协议的8种请求类型介绍

喜欢而已 提交于 2020-03-01 13:42:06
HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下: OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 GET:向特定的资源发出请求。 POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。 PUT:向指定资源位置上传其最新内容。 DELETE:请求服务器删除Request-URI所标识的资源。 TRACE:回显服务器收到的请求,主要用于测试或诊断。 CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 虽然HTTP的请求方式有8种,但是我们在实际应用中常用的也就是get和post,其他请求方式也都可以通过这两种方式间接的来实现。 HTTP协议中GET、POST和HEAD的介绍 2008-05-10 14:15 GET: 请求指定的页面信息,并返回实体主体。 HEAD: 只请求页面的首部。 POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。

http 206

独自空忆成欢 提交于 2020-03-01 12:33:31
206状态码, 大概就是浏览器先不下载要下载的文件,而是弹窗告诉用户,该文件是什么,有多大。由用户自行决定是否下载。 在html中,加一个a标签,a标签的地址是一个文件,就可实现该效果。 具体可参考下面解释: HTTP/206响应 最后一条会话返回了HTTP/206 “Partial Content”响应.这种响应是在客户端表明自己只需要目标URL上的部分资源的时候返回的.这种情况经常发生在客户端继续请求一个 未完成的下载 的时候(通常是当客户端加载一个体积较大的嵌入文件,比如视屏或PDF文件),或者是客户端尝试实现 带宽遏流 的时候. 你可以通过 Range 请求头辨认出一个部分内容请求.该请求头表明了客户端需要请求资源的哪一部分: 在上图的请求中,客户端告诉服务器,它需要该视屏文件中从172,032到13,325,503字节范围内的数据. 在大多数情况下,客户端还会发送一些条件请求头,让服务器来辨别该返回哪个版本的资源.在上图的请求中,客户端把它在上次接收该资源的0到172032字节部分请求中服务器返回的 ETag 响应头作为了本次请求的 If-Match 请求头发送了出去,同样还把上次响应中的 Last-Modified 响应头用 If-Unmodified-Since 请求头发送了出去. 如果服务器发现该资源的版本与客户端所请求的版本不匹配,则会返回一个 HTTP/412

HTTP错误提示 含义(不断总结)

醉酒当歌 提交于 2020-03-01 08:41:43
302错误 302错误表示被请求的资源暂时转移(Moved temporatily),然后会给出一个转移后的URL,而浏览器在处理服务器返回的302错误时,原则上会重新建立一个TCP连接,然后再取重定向后的URL的页面;但是如果页面存在于缓存中,则不重新获取。 404错误 404错误表示无法找到请求的资源,一般来说是文件不存在,这时候浏览器直接显示一个错误。 需要说明的是:实际上HTTP/1.1的RFC中对302和404又定义了很多个子状态码,分别表示多种情况,这里不再一一赘述。 一般的网站在用户请求的页面不存在的时候,为了友好起见,会返回一个302错误,然后重定向到一个正常页面。因此可以看出,如果服务器在遭受DDOS静态页面请求攻击而请求页面又不存在的时候,服务器返回302错误会比404错误消耗的资源更多(当客户端缓存不存在重定向后的页面的时候),因为每次请求会产生一个附加请求,而这次请求还会产生于一个新的TCP连接上。 来源: oschina 链接: https://my.oschina.net/u/216139/blog/62394