Coldfusion有没有办法选择性地启用用户会话?我不需要跟踪访问我的网站的所有用户,只有已登录的用户。只有在登录过程之后才有激活用户会话的方法吗?有没有办法在Coldfusion中有选择地启用会话?
(我有一种感觉,答案是否定的,但我认为我会问一些你可能有用户会话更多的经验。)
Coldfusion有没有办法选择性地启用用户会话?我不需要跟踪访问我的网站的所有用户,只有已登录的用户。只有在登录过程之后才有激活用户会话的方法吗?有没有办法在Coldfusion中有选择地启用会话?
(我有一种感觉,答案是否定的,但我认为我会问一些你可能有用户会话更多的经验。)
如果启用会话,你会得到他们的每用户。但是,没有说你需要使用会话变量。只有最基本的数据(例如会话令牌)将被创建。
您可以在/ member中添加一个Application.cfc,并在那里打开会话管理。
然后对于需要进行会话的页面,放置下/成员。
为什么你不想跟踪未登录的用户?只是不需要?保存内存?等等。
像Al说的那样,默认情况下会话非常轻。您可以将自己的业务逻辑设置为只在会话中跟踪偏好设置或购物车等事件 - 如果它们未登录,则它们只是未定义或为空字符串。
如果我没有启用会话,该如何在屏幕的上角显示购物车计数?我需要启用会话变量来跟踪用户是否登录,不是吗? 虽然这是一个很好的观点 - 有很多方法可以重新考虑问题,以避免会话。但是,用户友好的方式是让这些会话变量可用来显示用户特定的数据。 – 2009-12-07 16:39:48
一种解决方法是只需迅速放弃那些未登录的会话即可。这不会降低创建新会话的开销,如果这在应用程序中占据很重的位置,但它确实可以节省内存。我在几个大型应用程序中这样做,以避免蜘蛛等会议。您可以使用这种变化来快速过期未登录的访问者。
近你的Application.cfc的顶部:
<!--- save memory by expiring non-user sessions quickly --->
<cfif structKeyExists(cookie, "CFID")>
<!--- 7 days for normal users --->
<cfset THIS.sessionTimeOut = CreateTimeSpan(7, 0, 0, 0) />
<cfelse>
<!--- 30 sec short session for agents like bots that do not accept cookies --->
<cfset THIS.sessionTimeOut = CreateTimeSpan(0, 0, 0, 30) />
</cfif>
我不记得我了谁从这个想法,所以不能正确地归功于它。
非常有创意的解决方案! :-)我会做一些测试。这可能会帮助我。在一天中的某些时候,我受到了一些蜘蛛的袭击。这可能有所帮助。 – 2009-12-09 18:21:38
Henry,这是一个很好的解决方法,可能是我使用的解决方案。但是,似乎没有办法选择性地为整个公共站点的登录用户启用会话。 (无需为您提及的其他目录中的登录用户提供页面) – 2009-12-04 21:11:07