GET和POST的区别:
1. get所提交的数据位于URL之后,请求参数等会被完整的保留在浏览器记录里,参数的暴露存在安全问题,往往用于获取;而post参数在请求主体内,参数不会被保留因此更为安全,可以用于修改服务器的资源。
2. get请求只支持URL编码,post支持多种编码格式
3. get只支持ASCII字符格式的参数,post没有限制
4. get的提交数据大小受到浏览器限制,post提交的数据无限制
5. get方式需要Request.QueryString来取得变量值,post是童年过Request.form来获取
6. get方法产生一个TCP数据包,post产生两个。
Keep-Alive和非Keep-Alive的区别:
早期http/1.0中,浏览器每次发起http请求都要和服务器建立一个新的TCP连接,服务器完成请求后立刻断开,服务器不会记录过去的请求,创建和关闭的过程需要消耗资源和时间,为了减少资源的消耗,缩短响应时间,就需要重用连接。
http/1.1版本中默认使用持久连接,在此之前的http版本都是用的非持久连接,如果想在旧版本协议实现持久连接,就必须在指定的connection首部字段值设置为keep-alive。
非KA需要为每个请求的对象建立与维护一个新的连接,每个连接,client和server都要分配TCP缓冲区和变量,这将会给服务器带来严重负担,因为服务器通常会服务于数量巨大的客户端。KA方式下,服务器响应后该TCP连接会一直打开,client和server可通过相同的连接进行传输。
但KA也可能存在长时间连接而没有传输,导致占用了大量系统资源,因此对于TCP连接的最后一个http响应完成,会设置一个keepalive_timeout秒,之后就会对该连接关闭。
长连接:通常用于频繁的通讯情况,客户端连接较少,比如IM通讯,游戏。
短连接:用户数目较多的网页使用短连接,比如大型的电商网站。
HTTP的方法:
HTTP/1.0:
GET:请求指定页面信息和返回内容,用于读取数据
HEAD:类似于GET请求,但返回没有具体内容,只有获取报头。
POST:向指定资源提交数据请求,数据被包含在请求体内,能够建立新的资源或者修改已有资源
HTTP/1.1:
PUT:替换指定资源,如果没有该资源就新增。
DELETE:请求服务器删除URL标识的资源。
CONNECT:将服务器作为代理,让服务器代替用户进行访问。
OPTIONS:向服务器发送该方法,会返回对指定资源(服务器)所支持的HTTP请求方法。
TRACE:回服务器收到的请求数据,即服务器返回自己收到的数据,主要用于测试诊断。
PATCH:对PUT进行补充,用来对已知资源进行局部更新。