什么是 Coldfusion 会话?

5

我已经使用Coldfusion会话很长一段时间了,所以我知道它们是如何被使用的,但现在我需要知道它们是如何工作的,这样我就可以为网站的扩展计划做出规划。

Coldfusion用户“会话”只是一种快速设置2个cookie(CFTOKEN和CFID)和一个相关的服务器端内存结构吗?(SESSION范围)它还有其他作用吗?我正在尝试确定与用户会话相关的开销,与其他方法(如cookie)相比。

4个回答

10

您对它们的理解基本正确。虽然它们不与cookie绑定。 cookie是令牌的记录。如果浏览器未启用cookie,则该令牌可以通过url字符串传递。

我认为将东西保存在会话中而不是cookie具有两个主要优点:

  1. 您控制会话范围。人们无法编辑会话范围内的数据,除非您为他们提供界面。客户端可以修改cookie。
  2. 可以在其中存储复杂的数据结构、数组、对象、网络会话(FTP、交换)等。

它们的内存开销“低”,但这是一个相对的术语。使用ColdFusion Admin Server Monitor来深入了解您的会话实际使用了多少内存。


会话范围虽然无法直接受到客户端的影响,但如果 cookie 被修改,它们不是可以被欺骗吗? - Dan Sorensen
是的,丹,那是真的。会话可以被欺骗。使用管理员可以启用J2EE会话,这样做就更难了。但我的观点是用户不能直接干扰会话。即使他们欺骗了,他们仍然只能操纵应用程序允许他们操纵的内容,而不是像cookie一样,用户可以完全操纵。 - Terry Ryan

2
首先,会话是一种范围:安全高效的方式,可以保留当前用户属性,如权限或偏好设置。不确定您所说的“其他方法”是什么意思,但我怀疑您无法在cookie中保存复杂的数据结构(查询、对象、数组)。
其次,应用程序服务器为您提供了非常方便的事件处理程序,特别是针对会话的onSessionStart()和onSessionEnd()。
第三,会话可以很容易地共享和集群化:在CF应用程序之间或在CF和J2EE之间。

除了存储在 cookie 或数据库中并与 cookie 相关联的数据之外,还有其他方法。对于这个应用程序,我没有进行太多跟踪。会话范围是最合理的选择,除非它的开销比其他方法大。 - Dan Sorensen

2
会话是在jvm内存中分配给特定应用程序空间的每个用户内存空间。这两个cookie是指向该内存空间(令牌)的指针。是的,使用会话会有一些开销(RAM、交换空间等),但除非您将大量数据塞入会话范围内,否则不应该太糟糕。

2

会话的一个方面没有提到的是它们有生命周期:默认为20分钟(不活动)。应用程序可以设置此生命周期,但永远不能超过ColdFusion管理员设置的限制。

如果内存使用是一个问题,时间限制可以缩短,尽管还有很多取决于Java垃圾回收。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接