2009-12-03 96 views
1

Coldfusion有沒有辦法選擇性地啓用用戶會話?我不需要跟蹤訪問我的網站的所有用戶,只有已登錄的用戶。只有在登錄過程之後纔有激活用戶會話的方法嗎?有沒有辦法在Coldfusion中有選擇地啓用會話?

(我有一種感覺,答案是否定的,但我認爲我會問一些你可能有用戶會話更多的經驗。)

回答

3

如果啓用會話,你會得到他們的每用戶。但是,沒有說你需要使用會話變量。只有最基本的數據(例如會話令牌)將被創建。

1

您可以在/ member中添加一個Application.cfc,並在那裏打開會話管理。

然後對於需要進行會話的頁面,放置下/成員。

+0

Henry,這是一個很好的解決方法,可能是我使用的解決方案。但是,似乎沒有辦法選擇性地爲整個公共站點的登錄用戶啓用會話。 (無需爲您提及的其他目錄中的登錄用戶提供頁面) – 2009-12-04 21:11:07

0

爲什麼你不想跟蹤未登錄的用戶?只是不需要?保存內存?等等。

像Al說的那樣,默認情況下會話非常輕。您可以將自己的業務邏輯設置爲只在會話中跟蹤偏好設置或購物車等事件 - 如果它們未登錄,則它們只是未定義或爲空字符串。

+0

如果我沒有啓用會話,該如何在屏幕的上角顯示購物車計數?我需要啓用會話變量來跟蹤用戶是否登錄,不是嗎? 雖然這是一個很好的觀點 - 有很多方法可以重新考慮問題,以避免會話。但是,用戶友好的方式是讓這些會話變量可用來顯示用戶特定的數據。 – 2009-12-07 16:39:48

1

一種解決方法是隻需迅速放棄那些未登錄的會話即可。這不會降低創建新會話的開銷,如果這在應用程序中佔據很重的位置,但它確實可以節省內存。我在幾個大型應用程序中這樣做,以避免蜘蛛等會議。您可以使用這種變化來快速過期未登錄的訪問者。

近你的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> 

我不記得我了誰從這個想法,所以不能正確地歸功於它。

+0

非常有創意的解決方案! :-)我會做一些測試。這可能會幫助我。在一天中的某些時候,我受到了一些蜘蛛的襲擊。這可能有所幫助。 – 2009-12-09 18:21:38

相關問題