2013-04-28 63 views
0

該文檔提供以下方法來APC緩存:

//Cache data for 2 days 
$frontCache = new Phalcon\Cache\Frontend\Data(array(
    'lifetime' => 172800 
)); 

    $cache = new Phalcon\Cache\Backend\Apc($frontCache, array(
     'prefix' => 'app-data' 
)); 

//Cache arbitrary data 
$cache->save('my-data', array(1, 2, 3, 4, 5)); 

//Get data 
$data = $cache->get('my-data'); 

這似乎不是簡單地做

apc_store('my-data', array(1, 2, 3, 4, 5), 172800); 
apc_fetch('my-data'); 

請澄清frontCache超級簡單的方法和「前綴」鍵過於複雜。該文檔在緩存區域中有一點需要。

回答

2

你通常不只是想存儲「一個值」。您更可能想要將結果緩存到您的Web應用程序中,該應用程序是在抽象OOP代碼中的特定層中創建的。

所以緩存本身可以在OOP中抽象出來,而且當代碼的其餘部分也是很好的OOP時,它通常是合適的。這就是你所看到的。

更具體:

緩存的行爲通常包括兩個組成部分:

  1. 的前端。這可以涉及任何要緩存的內容。
  2. 後端。這是緩存存儲,像APC,Memcached或簡單文件。

後端處理與存儲引擎的交談。這是您的簡單功能發揮作用來實際存儲價值的地方。

前端允許抽象哪些數據實際存儲。您可以簡單地緩存值,您可能需要緩存數據庫結果,您可能需要將調用緩存到類的方法。所有這些對您的應用程序應該是透明的,並且可能對您的代碼也是透明的。但手工處理數據通常沒那麼有意義。這就是實施的前端所爲。

我從Phalcon文檔學習,沒有太多的前端實現,但有一個接口。所以使用它的方法是檢查你想要緩存什麼樣的東西,然後實現這個東西的裝飾器模式,它也實現了這個接口。

我不能進入更多的細節,因爲我沒有任何Phalcon經驗。

1

除了Sven的回答,前端的目的是定義數據來自何處(由開發人員明確定義,來自輸出緩衝區等),數據在將數據存儲到後端之前必須如何處理並從後端得到它們之後。您可能希望序列化數據或使用諸如base64/json之類的轉換器,以獨立方式存儲數據。

5

你是正確的,你的方法是簡單的,但他們的方式更靈活,例如,通過使用$cache->save代替apc_store您可以快速使用APC到另一個高速緩存系統,文件,分佈式緩存等交換通過改變一個或兩行的代碼,而不是通過您的整個應用程序進行查找和替換。

它在當前項目中可能並不重要,但如果您在不同的服務器上處理各種不同的項目,這可能會產生很大的不同。通過使用抽象,即使在緩存後端不同時,您也可以重新使用代碼。

相關問題