标签:
一、http请求流程
用户:
浏览器:
代理服务器:
二、缓存
缓存既可以降低服务器压力,又节省带宽,而且还可以降低服务器峰值压力(突然出大事,很多人都想上同一网站)
缓存的拓扑结构:浏览器有缓存 --〉 浏览器缓存不中,去低层次代理服务器缓存 -->低层次代理服务器缓存不中,再去高层次代理服务器缓存 --〉 .......
程序如何控制缓存?
服务器方面: 通过在response中添加expires/cache-control: max-age,设置文档的过期时间
客户端方面: 通过pragma: no-store/no-cache等方式限制从缓存拿文件响应
三、连接
有三种方式:
1、独立事务型 (connection: close)
每次request/response都是一个独立的连接。服务器读到内容结束,就表示是全部的内容/网络中断了。
但显然效率低
2、持久连接型 (connection: keep-alive)
现在浏览器默认都是这种,要求Http1.0以上版本。 需要特别指定content-length属性,服务器才能知道多长一段就是一个消息内容。
效率高,一般服务器会限制每个用户最多只有4个持久连接
3、分块传输 (Transfer-Encoding: xxx)
用于当页面内容是动态生成,那么完全生成之前,服务器是无法知道内容的content-length的。只好一段段发送,但是每段的length是需要标明。
四、用户识别
有几种方式:
1、ip 缺点是ip是动态的;而且多个用户可能共用一个电脑/ip
2、user-agent 判断浏览器类型
3、用户名 需要用户登录
4、cookie 淘宝在未登陆状态下的购物车
五、
标签:
原文地址:http://www.cnblogs.com/johnchow/p/4778236.html