很多人都知道Cookie保存在客户端,Session保存在服务端,但除此之外还有很多的知识点,关于Cookie和Session的区别也是面试时候经常问起的问题。
Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息,注意“带上这些信息”,也就是说发送一个请求到服务端的时候,浏览器会把这些Cookie信息同时发送给服务端,因此,当你大量使用Cookie作为信息载体的时候,每一次的传输也会消耗一定的带宽,例如,你的一个Cookie文件大小是10k,那么10w人同时发送请求,那么消耗的带宽就是10k * 100000。
Session是存储在服务器端的文件信息,它相当于一个会话,使用时需要开启会话,Session文件创建后会发送给客户端一个session_id,客户端会使用Cookie文件保存该session_id。session_id用来识别Session文件,当没有这个session_id时服务器会认为这是一个新的会话,就会重新创建一个新的Session文件,所以禁用Cookie时,客户端就无法将该session_id传输给服务端,这时可以用其他办法记录session_id,具体有以下几点:
设置php.ini配置文件中的“session.use_trans_sid = 1”,或者编译时打开打开了“–enable-trans-sid”选项,让PHP自动跨页传递Session ID。
手动通过URL传值、隐藏表单传递Session ID。
用文件、数据库等形式保存Session ID,在跨页过程中手动调用。
以上是关于Cookie和Session的简单描述。