以下是PHP中基於驅動程序的緩存類的簡單開始。另一位用戶提交它...將PHP會話和cookie作爲緩存選項是不好的?
<?php
class Cache
{
protected $Driver;
public function __construct($driver)
{
require_once 'drivers/' . $drivers . '.driver.php';
$driver = "Cache_Driver_" . $driver;
$this->Driver = new $driver;
}
public function create($key,$value)
{
return $this->Driver->create($key,$value);
}
public function read($key,$value)
{
return $this->Driver->read($key,$value);
}
public function update($key,$value)
{
return $this->Driver->update($key,$value);
}
public function remove($key)
{
return $this->Driver->remove($key);
}
}
?>
我的計劃是有單獨的類「文件/驅動器」用於緩存的每個方法我將在我的應用程序。到目前爲止,我打算使用,
- 文件
- APC
- 的Memcache或Memcached的
- Redis的
- 會話
- 餅乾
所以我的主要問題(#1)在這裏,我意識到會話和cookie通常不被認爲是緩存的一部分,但我認爲他們會適合在這裏,而不是真正「緩存」大量數據,但更多的是作爲獲取/設置會話和cookie的方式s,而不是具有特定的會話和cookie類,他們會利用我的get/set/unset方法從這個類。
請告訴我你對這個想法的看法?好,壞,任何暗示?謝謝!
問題(#2) n對於我的課,這將成爲會議上,我就在想,我在構造函數中的會話Driver類,我可以打電話給
session_start()
那裏。可能的問題是,這不是要求我立即使用會話驅動程序啓動緩存,就像在我的應用程序的頂部調用其他任何內容之前一樣?或者更糟的是,在我的應用程序的頂部,必須在類本身之外調用session_start()?再次尋找suggetions,我覺得我忽略了一些東西,再次感謝任何幫助。
<?php
$cache = new Cache('Session');
?>
會話和cookie最明顯的問題是無法使緩存條目無效。 – zerkms 2011-03-30 00:44:12
會議也不是很耐用。默認情況下,會話至少每小時清除一次。此外,像googlebot這樣的抓取工具會爲他們請求的每一個頁面生成一個新的會話。如果您的應用程序擁有多個Web前端,則必須處理將會話移動到共享存儲,或基於會話進行負載平衡。 – 2011-03-30 01:06:23