ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
首先思考一个问题: > COOKIE 和 SESSION 有什么区别? 如果你不能立刻回答这个问题,那么请看下面的讲解?(若能回答,请略过此小节) #### 场景描述 * 场景一 相信大家都有过网上购物的经历,当你`推着`你的购物车在商城里浏览各种商品时,总是会管不住自己的手,会去点击`添加到购物车`按钮,我们不断的向购物车里添加删除商品,这个简单的操作,在客户端看来,很容易知道哪些商品在购物车中,但是远程的服务器却是不知道的,因为 HTTP 协议是无状态的。每次客户端打开新的 Web 页面,服务端都会开启一个新的会话,且服务端不会自动维护客户端的连接信息,那么这个问题该如何解决呢? * 场景二 大家在登录网站之后,一般在导航栏部分会显示我们的用户名或头像信息,你在这个网站上的各种页面之间来回跳转,你的信息始终都会显示。你可能首先会想到使用 cookie 实现,但是存在一些问题,下面会提到。那么有什么更好的解决方案呢? #### 解决方案 * 数据库实现 将必要的信息存入数据库,展示的时候再取出来。但是在不同的页面之间的跳转,实现太复杂和麻烦,而且每一次查看都需要调用数据库,会造成服务器负荷过大。 ![此处输入图片的描述](https://doc.shiyanlou.com/document-uid108299labid1396timestamp1484381174476.png) * cookie 实现 安全性不高,在网络传数据(带宽的浪费) ![1](https://doc.shiyanlou.com/document-uid108299labid1397timestamp1467797184994.png) * 解决办法:session 技术(将用户数据保存在服务器端) ![此处输入图片的描述](https://doc.shiyanlou.com/document-uid108299labid1396timestamp1484382544949.png) 这个`session1.php`可以把数据保存在 session 文件中,它会有自己的一套方案,放在了 session 文件的默认路径中,`session2.php`可以从 session 文件中取出该浏览器保存的 session 数据。