2010-02-11 35 views

回答

1

Rose::DB::Object::Cached將對象緩存在純舊(非共享)內存中。在mod_perl下,這意味着每個apache進程都有自己的緩存。但是,您可以在服務器啓動時緩存對象。所有這些緩存的對象將隨後與每個apache子進程共享。這對於您在服務器的生命週期中不會期望更改的只讀對象非常有用。

要獲得更靈活的緩存選項,請查看Rose::DBx::Object::Cached::CHI

至於第二個問題,Rose::DB::Object::Cached只能從load()save()的高速緩存中讀取和寫入。大多數關係方法使用Manager查詢來獲取對象,因此不會從Rose::DB::Object::Cached緩存中讀取。

+0

謝謝約翰,你有什麼建議經理路線? – Timmy 2010-02-11 22:14:43

+0

我建議不要緩存除只讀對象以外的任何內容。根據我的經驗,更高級別的緩存(例如頁面組件或整個頁面)或更低級別(例如,位於數據庫本身之前的緩存)往往比緩存在數據庫對象級別更有成果。 – 2010-02-11 23:21:02

+0

他們是99%的時間只讀。也許很小的事情會改變,但他們會被閱讀所控制,而且不是最新的。幾乎就像有一個表「ID,顏色,描述」 - ID一樣,顏色總是相同的,並且描述可能會稍微改變一次,但不是必需的。我已經轉而使用Rose :: DBx :: Object :: Cached :: CHI來玩,除了管理員事務的不確定性之外,它已經非常有幫助了。 – Timmy 2010-02-11 23:26:01