我有一些對象存儲在緩存中通過putCache()
緩存中的對象的超時時間爲10分鐘。組件銷燬期間的清理(ColdFusion)
這些對象在所有用戶之間共享。但是,有2-3個依賴於用戶的變量。 當前,每個對象都將這些依賴於用戶的變量存儲在用戶會話中。
問題:
當組件從高速緩存器10分鐘,用戶會話中的變量不被刪除之後去除。 因此,也許後12分鐘的對象再次創建,並會寫入2個新變量的用戶會話
注:每個對象將創建會話範圍新結構與唯一的名稱。舊的變量不能被覆蓋,因爲新的對象不知道前一個對象的結構名稱。
示例:對象是「list.cfc」,可以有20個不同的列表,每個列表存儲完全不同的數據。在會話中,我們只存儲當前用戶的「list_position」 list_items存儲在緩存中,對所有用戶都是一樣的。
我們希望在對象被銷燬時清理會話變量。如何才能做到這一點?
這個想法:在PHP中,我會使用__destruct()
方法,但我在ColdFusion中找不到這個方法。
您是否考慮將這些對象存儲在應用程序或服務器範圍中,以便它們不必被重新創建而銷燬? –
@DanBracuk是的,但我們不能改變這一點。有超過100個應用程序正在運行(每個應用程序最多有200個會話),每個應用程序有幾千個對象。一個特定的模塊只能使用大約一百個對象,因此當用戶更改模塊時,我們使用緩存來釋放內存 – Philipp