什么时候应该使用会话variables而不是Cookie?
会话variables和Cookie看起来和我很相似。 我了解技术上的差异,但是如何决定何时使用一种和另一种?
-
会话存储在服务器上,这意味着客户端无法访问存储的信息。 会话数据存储在您的服务器上,不需要每页都完整传输; 客户只需要发送一个ID,并从服务器上加载数据。
-
另一方面,Cookie存储在客户端上。 它们可以长时间持久使用,并且可以让您在拥有一组Web服务器时更加顺畅地工作。 不过,与会话不同,存储在Cookie中的数据将随每个页面请求一起完整传输。
-
避免将数据存储在Cookie中
- 它可以被terminal用户看到,阅读和操作,或被那些有恶意的人拦截。 除了“session_id”之外,您不能相信cookie中的任何数据。
- 它增加了你的带宽,如果你为每个用户每页添加1k的数据请求,那么你的带宽可能会增加10-15%。 从$$的angular度来看,这可能并不昂贵,但可能是从性能的angular度来看。 它有效地将每个服务器的带宽降低10-15%,即可能会导致您需要更多的服务器。
-
会话数据中可存储的内容取决于您拥有的数据量和用户数量。
no_of_users
*size_of_session_data
必须小于服务器上可用的可用内存。
- 总是使用会话
- 只有在需要更长时间的login会话时才使用cookie – 然后使用encryption的userId添加cookie。
大多数情况下,会话状态是使用cookie持久化的。 所以这不是真正的问题,而是如何一起使用它们。
使用你的框架的会话基础设施可能会让事情变得更容易,但是用cookies手动跟踪状态通常会给你更好的粒度控制。 正确的解决scheme取决于你想要完成什么。
Cookie可以坚持比一个会话更长的时间。 但是,cookies也可能被用户删除,或者您可能有一个浏览器不接受cookie的用户(在这种情况下,只有一个服务器端会话将工作)。
Cookie是客户端,会话是服务器端。 对于可以信任用户的数据(如字体设置,网站主题等)以及服务器端数据(如会话ID)的不透明ID使用cookie。 预计这些数据可能随时丢失,并且不可信(即需要消毒)。 将会话数据用于更大的数据块(对于许多系统可以存储对象,数据结构等)以及您必须信任的数据块 – 如授权状态等。通常,使用会话数据来存储更大的状态数据。
如果需要GUI,caching等等,你也可以在cookie中存储授权状态等信息 – 但绝对不要相信它,也不要依赖它。 Cookie很容易删除,容易造假。 会话数据很难伪造,因为你的应用程序控制它。
每个请求都会向服务器发送Cookie,因此如果您计划存储相当数量的数据,请将其存储在会话中,否则,如果您存储的数据量较小,那么Cookie就会无效。 任何敏感数据都应存储在会话中,因为cookie不是100%安全的。 Cookie的一个优点是可以节省通常存储会话数据的服务器上的内存。
会话存储在服务器上。 如果您在Cookie中存储了某些内容,则用户的浏览器会根据每个请求发送该信息,从用户的angular度来看,可能会降低您的网站的速度。 我尽量避免使用cookies。
仅在数据太大而无法使用cookies
使用sessions
,或者如果数据太大,以至于在使用cookies
会降低性能。
例如,如果您要保存较小的数据,那么cookie
中的session id
的大小,如2login令牌或类似的…然后,我不明白为什么会使用sessions
通过cookies
。
另外请注意, PHP
会话文件默认保存在磁盘上,而cookie仅保存在客户端。
会话存储在服务器端。如果访问者在Cookie中存储了某些内容,浏览器会发送用户所提出的每一个请求信息,这往往会耗费大量服务器计算机的时间,并减缓用户的体验。一些浏览器也不支持cookies给cookies更多的会议优势..我强烈build议sessions.This网站可能会帮助http://php.net/manual/en/features.cookies.php谢谢;
你明确的指导
NB – Cookie存储在用户浏览器上, Session存储在你的托pipe服务器上。
何时使用
-
当您希望应用程序始终记住用户的数据时,即使closures了浏览器,也可以使用cookie 。 例如,只要您inputwww.Facebook.com,即使您的浏览器已closures并重新打开,也会将您带到您的帐户。
因为closures浏览器后,会话中保存的任何数据都将被清除。
-
当要存储的用户信息比正常大得多时使用cookie 。 …有了会话,如果你有像Facebook这样的更大的用户群,想起它将如何在托pipe机器上存储所有的用户会话。
-
当要存储的用户信息不大于正常值时, 使用会话 ,并且不希望公众访问您的用户variables。
PHP会话的一个缺点是会话处理是如何工作的。 具体来说,只有一个进程/请求可以有一个会话打开一次写入。 上
session_start()
会话文件被locking。 如果有更多的进程出现,其他人就会堆积起来等待轮到他们。
换句话说,如果您在页面上使用AJAX来更新多个元素 – 您不希望AJAX请求打开同一个会话 – 它们将被强制进入队列,如果其中一个请求被阻塞 – 它将不会释放会话 – 导致浏览器挂起,打开新的选项卡或窗口只会将另一个不可填的请求放入服务器的队列中。 运用
session_write_close()
尽快释放会议是一个部分的解决方法。
用户厌倦并打开更多窗口的长时间运行请求可能具有相同的浏览器挂起效果。
我build议避免PHP会话。