2012-09-18 83 views
5

如何緩存Doctrine MongoDB結果?查看Configuration的代碼,它看起來沒有像標準Doctrine一樣的內置結果緩存,只有查詢緩存。Doctrine MongoDB結果緩存

我曾想過在應用程序中創建自己的緩存層,但返回的對象非常沉重,因爲它們包含許多視圖不需要的Doctrine邏輯。我如何配對這些對象,使它們實際上只是數據容器?

回答

5

學說MongoDB ODM不支持查詢緩存,所以這肯定是你在你的應用程序中暫時需要處理的東西。

如果您遇到重物的問題,那很可能是代理實例(對於參考文檔),因爲那些實例包含對內部原則服務(例如UnitOfWork)的引用。如果您想高效地緩存這些內容,那麼您基本上需要在存儲之前剔除這些引用,然後在從緩存中獲取後再恢復它們。這可能比它的價值更麻煩,但它會將對象減少到所需的數據容器。

或者,如果您使用查詢構建器,則可以禁用水合作用,然後爲返回的數組結果實施緩存。除此之外,您可以在應用程序中查看緩存視圖(這在Symfony2中很理想,其中一個請求可能會觸及多個控制器,其中每個控制器都可以應用自己的緩存規則並可選擇使用ESI)。

+0

無用的mongodb大部分它不支持的東西 –

+1

@SunilRawat ODM是一個開源項目,繼續實施緩存併發送PR,而不是咆哮 – malarzm