在一般情況下,我有以下情形:有沒有辦法清除所有會話中的一些會話數據?
- 獲取產品,並從數據庫及其相關數據
- 轉換獲取的數據到PHP的「產品」對象的會話
- 緩存的產品對象
緩存是隻讀的,即客戶在網站上查看產品。
但有類似getProductIdsByCategory($categoryId)
的調用,並且來自這些結果的productId也被緩存,每個用戶不使用我已閱讀過的全局緩存。
問題是,如果管理員端的某人添加了新產品並將其與某個類別關聯,則客戶將不會讓新產品出現在其緩存的getProductIdsByCategory
中,直到啓動新的會話。
添加新產品時,是否有辦法從服務器上的所有會話中清除例如$_SESSION['x']
?我不想銷燬所有會話,因爲客戶將失去登錄等。
或者我應該將這些緩存的productId搜索移至全局緩存嗎?
使用定製的緩存,而不是memcached或類似的。
感謝
memcached是一種很好的「現代」做事方式嗎?我對此不甚瞭解。 – 2009-07-19 12:52:41
@大衛,是的。任何可同時訪問的共享狀態都可以使用。一些ORM系統將允許這樣做。請記住,在任何系統中清除都會有差距,因爲PHP會將共享狀態複製到應用程序中。如果緩存很髒,或者需要類似的約束條件,則需要停止重新保存。這是你需要限制的輸入。 – 2009-07-19 12:55:17