理解HTTP幂等性

基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web服务都非常简单。再加上浏览器、Javascript、AJAX、JSON以及HTML5等技术和工具的发展,互联网应用架构设计表现出了从传统的PHP、JSP、ASP.NET等服务器端动态网页向Web API + RIA(富互联网应用)过渡的趋势。Web API专注于提供业务服务,RIA专注于用户界面和交互设计,从此两个领域的分工更加明晰。在这种趋势下,Web API设计将成为服务器端程序员的必修课。然而,正如简单的Java语言并不意味着高质量的Java程序,简单的HTTP协议也不意味着高质量的Web API。要想设计出高质量的Web API,还需要深入理解分布式系统及HTTP协议的特性。

Continue reading 理解HTTP幂等性

HTTP无状态和Keep-Alive容易犯的理解误区

 

名词解释:
HTTP无状态:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开 一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系
如果你要实现一个购物车,需要借助于Cookie或Session或服务器端API(如NSAPI and ISAPI)记录这些信息,请求服务器结算页面时同时将这些信息提交到服务器
当你登录到一个网站时,你的登录状态也是由Cookie或Session来“记忆”的,因为服务器并不知道你是否登录
优点:服务器不用为每个客户端连接分配内存来记忆大量状态,也不用在客户端失去连接时去清理内存,以更高效 地去处理WEB业务
缺点:客户端的每次请求都需要携带相应参数,服务器需要处理这些参数

使用PHP得到所有的HTTP请求头

在PHP里,想要得到所有的HTTP请求头,可以使用getallheaders方法,不过此方法并不是在任何环境下都存在,比如说,你使用fastcgi方式运行PHP的话,就没有这个方法,所以说我们还需要考虑别的方法,幸运的是$_SERVER里有我们想要的东西,它里面键名以HTTP_开头的就是HTTP请求头:

$headers = array();
foreach ($_SERVER as $key => $value) {
if ('HTTP_' == substr($key, 0, 5)) {
$headers[str_replace('_', '-', substr($key, 5))] = $value;
}
}

代码很简单,需要说明的是RFC里明确指出了信息头的名字是不区分大小写的。
Continue reading 使用PHP得到所有的HTTP请求头

libiconv.so.2: cannot open shared object file解决办法

刚才装了个Apache,但是一执行ab或者httpd就报错.

[root@Test2 bin]# ./httpd
./httpd: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

在网上搜了下,找到这个解决办法.

在/etc/ld.so.conf中加一行/usr/local/lib,然后运行/sbin/ldconfig,问题解决.

Continue reading libiconv.so.2: cannot open shared object file解决办法

IE和FF下查看HTTP头文件信息的插件

通过这2个插件可以获得服务器返回的页面header信息,对于解析web服务器的工作情况非常有帮助。如查看gzip压缩是否成功及html文件的大小。

iehttpheaders下载地址:http://www.blunck.se/iehttpheaders/iehttpheaders.html
安装以后 点击IE 工具–工具栏–浏览器栏–ieHttpheaders即可

FF的LiveHTTPHeaders下载地址:http://livehttpheaders.mozdev.org/installation.html
查看–侧栏–LiveHTTPHeaders

刚刚发现firebug也有这种功能,但不是每张图片都能显示Content-Length。

转自: http://qin686-163-com.javaeye.com/blog/290601

返回顶部