Http details

 

Http range:

 

/*

 * the single part format:

 *

 * "HTTP/1.0 206 Partial Content" CRLF

 * ... header ...

 * "Content-Type: image/jpeg" CRLF

 * "Content-Length: SIZE" CRLF

 * "Content-Range: bytes START-END/SIZE" CRLF

 * CRLF

 * ... data ...

 *

 *

 * the mutlipart format:

 *

 * "HTTP/1.0 206 Partial Content" CRLF

 * ... header ...

 * "Content-Type: multipart/byteranges; boundary=0123456789" CRLF

 * CRLF

 * CRLF

 * "--0123456789" CRLF

 * "Content-Type: image/jpeg" CRLF

 * "Content-Range: bytes START0-END0/SIZE" CRLF

 * CRLF

 * ... data ...

 * CRLF

 * "--0123456789" CRLF

 * "Content-Type: image/jpeg" CRLF

 * "Content-Range: bytes START1-END1/SIZE" CRLF

 * CRLF

 * ... data ...

 * CRLF

 * "--0123456789--" CRLF

 */

 

Last-Modified\ If-Modified-Since:

 

一般纯静态页面本身都会有Last-Modified信息,Apache服务器会读取页面文件中的Last-Modified信息,并添加到http响应头部。
    对于动态页面,如果在页面内部没有通过函数强制加上Last-Modified,例如header(”Last-Modified: ” . gmdate(”D, d M Y H:i:s”) . ” GMT”),Apache服务器会把当前时间作为Last-Modified,返回给浏览器。
   无论是纯静态页面还是动态页面,Firefox浏览器巧妙地按照接受到服务器响应的时间设置缓存页面的Last-Modified,而不是按照http响应头部中的Last-Modified字段。
 
   如果服务器检查认为修改过,则发送200和数据;如果认为没修改,则发304,不包含数据。
 
 
ETag:
是一种比Last-Modified时间更精确的验证资源修改的方法。
 
 
Cache-Control:
是服务器控制客户端缓存策略的。
 
 http/1.0未实现cache-control,但http/1.0可使用pragm:no-cache来指示不缓存。
cache-control中指定的max-age优先级高于expires。
 
 
 
 
响应头举例:
HTTP/1.1 200 OK
Server: NWS_imgcache_HY
Connection: keep-alive
Date: Thu, 12 Dec 2013 08:39:24 GMT
Cache-Control: max-age=259200
Expires: Sun, 15 Dec 2013 08:39:24 GMT
Last-Modified: Fri, 15 Nov 2013 05:57:01 GMT
Content-Type: image/jpeg
Content-Length: 98939
X-Cache-Lookup: Hit From MemCache
 
 
可以看出,Expires是Date + max-age之和。  响应头的Date是原始服务器发出资源到MemCache的时间。
max-age单位为秒。

 




//-------------------------------------------------------------------------------------

redirection:

301响应:
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/
Content-Type: text/html
Content-Length: 174
 
<html>
<head>
<title>Moved</title>
</head>
<body>
<h1>Moved</h1>
<p>This page has moved to <a href="http://www.example.org/">http://www.example.org/</a>.</p>
</body>
</html>

302响应:

Client request:

GET /index.html HTTP/1.1
Host: www.example.com

Server response:

HTTP/1.1 302 Found
Location: http://www.iana.org/domains/example/

重定向的新位置通常由Location域提供。

HTTP/1.0 通常使用302,这时通常不对POST请求做进一步的操作(向新url发送请求),而只处理GET的进一步操作。

301是告诉client,永久重定向到新地址,下次请求可直接使用新地址请求。一般编码时,对301,可按302的过程处理。

HTTP/1.1,增加了303和307,303指定client修改verb为GET请求后再向新位置发请求;307指定client不能修改verb,使用原verb向新位置发请求。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值