http无状态

1》官方说法:

1.协议对于事务处理没有记忆能力

2.对同一个url请求没有上下文关系

3.每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求时无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况

4.服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器

2》理解

标准的http协议指的是不包括cookies,session,application的http协议

服务上肯定有用户的数据,所以这里中的状态不是指用户的数据,无状态是没有对本次会话设置一个缓存区,记录这次会话的状态,缓存区包括服务端和用户端,这个状态就是客户端和服务器在临时会话中产生的数据(实现这些东西所凭借的后面的缓存空间中的客户的临时数据)

3》例子理解

假设没有cookie和session只有http的时候,当一个注册用户访问这个购物网站的时候,发生的情况

1.前提情况:

服务器为每个注册用户建立了数据表,记录用户的数据

http是无连接的

2.第一步需要登录

用户通过http把用户的用户名和密码发给服务器,服务器把他们跟自己存有的用户资料对比,如果一致返回信息登录成功

3.然后用户点击某一商品页

相当于输入一个商品页的网址,假设商品页比较机密不对外公开,需要是用户才能访问,虽然http能传送用户名和密码,而且刚才也输入了,还验证成功,但是因为服务器既不会记得你登录的状态客户端也不会存储你刚才输入的用户名和密码,所以因为这一次访问无法确定你的身份,只能访问失败。

为解决这个问题只能在你访问的网址的同时继续带上你的用户名和密码

4.现在假设,你已经选了几件商品在你的购物车中,你想再添加一件商品,于是你点击某个商品旁边的加号

这个动作相当于输入一个网址,网址的内容是发送一个请求,往你的购物车中加入这个商品

系统首先用你传来的用户名和密码验证你的身份,然后访问你的数据库,在其中的购物车属性下加一条数据,就是这个商品的数据,操作结束后,返回操作结束,并结束访问

虽然可以解决但是会有三个很大的问题

1.每访问一次需要权限的内容都需要在客户端输入用户名和密码,多次少量的访问存在非常大的性能浪费。就会想到一次大量的操作更加有效率,就是很容易想到了缓存区(cookie解决)

2.每一次操作都要与系统底层的数据库进行交互(session机制解决)

3.非重要琐碎数据(非重要数据)被写入数据库跟主要数据放在一起,存放这些非重要数据也很容易想到缓存区(session机制解决)

参考:http://www.cnblogs.com/bellkosmos/p/5237146.html

  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值