1、当获取Server端的资源时,假设会有很多资源,例如:图片、动画、声音、文字等,则,一次请求就可以把所有这些都得到吗?对于图片,在html文档中,我们可以看到,<img src = "/edeal/image/trespass.jpg">既然我们的html文本中仅仅包含了一个<img src = "/edeal/image/trespass.jpg">,那么图片本身是如何被Browser显示的,肯定是被传送到了Browser本地了,但是,这个传递是Browser如何发起的,又是如何结束的?2、Expire报头域
Expire是请求还是响应的报头域:应该是响应的报头域
响应时,响应报头域会设置Expire;但请求时,Browser如何使用Expire的?Browser请求时,请求还会到达Server嘛,还是说,直接在本地Browser就知道此请求不必发到Server啦?
请求时候,Browser到哪里去找到Expire信息?是Browser还是Server来验证此请求是否过期
Expire是请求还是响应的报头域:应该是响应的报头域
响应时,响应报头域会设置Expire;但请求时,Browser如何使用Expire的?Browser请求时,请求还会到达Server嘛,还是说,直接在本地Browser就知道此请求不必发到Server啦?
请求时候,Browser到哪里去找到Expire信息?是Browser还是Server来验证此请求是否过期
所以Expire应该是响应中指示缓存时间的域
另外第一个问题,我的理解是第一次请求先取回页面html,然后浏览器在显示页面解析html时,再从服务器取回图片等
Enumeration e = request.getHeaderNames();
while(e.hasMoreElements()){
String h = (String) e.nextElement();
String hvalue = request.getHeader(h);
out.print("头名:"+h+"\t值:"+hvalue+"<br>");
}上面代码获取所有的HTTP头,不同的浏览器不同的。
有个名为If-Modified-Since的头,他会检测服务器资源有没有更新,如果更新返回新内容,没有的化直接调用本地浏览器缓存。直接一个网页的多个MINE类型的内容,好像只需要建立一次连接吧。和哥哥浏览器的机制有关。
GET /index.html HTTP/1.1
Host: www.example.com
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8根据服务端响应,返回内容是有MIME类型限定的,可见不是一次返回所有,而是按MIME类型分次返回,还有如GET /images/logo.png HTTP/1.1