Оценка "быстрее" конечно чисто умозрительная. Так как испробовать 1-й вариант я не могу и соответственно сравнить тоже.
Но мои плюсы таковы:
1. Так как, например, в cache_pages храниться не 1000+ страниц (=1000*50 Кб), а только одна (= 50Кб), то выборка из такой таблицы будет быстрее. И таблица большая и в кэш mysql маловероятно попадет. В целом уменьшение размера cache_pages полезнее для всего сайта.
2. На сервере проц быстрый, поэтому накладные расходы на выполнение USER_INT с учетом php-акселераторов минимальны.
3. Положить/взять из memcached - это всего одна
очень быстрая функция php. Ключ делается например путем md5(serialize($this->piVars)). Если надо привызываться к выводу single, то можно использовать $this->extKey.$recordID.'single'. И по этому же ключу чистить кэш при изменении записи в БД.
Модуль закрытый
- но все это очень даже просто:
PHP код:
...
// соединяемся с Memcache если есть
if (class_exists('Memcache')) {
$this->memcache = new Memcache;
if (! @$this->memcache->connect('localhost', 11211)) {
$this->memcache = null;
}
}
...
function cache_set ($key, &$data, $time = 300, $force_caching = false)
{
if (! $force_caching && intval(t3lib_div::_GP('no_cache'))) return false;
if (! is_object($this->memcache)) return false;
return $this->memcache->set($key, $data, MEMCACHE_COMPRESSED, $time);
}
function cache_get ($key, $force_caching = false)
{
if (! $force_caching && intval(t3lib_div::_GP('no_cache'))) return false;
if (! is_object($this->memcache)) return false;
$data = $this->memcache->get($key);
return $data;
}
В итоге имеем 50Кб в mysql + 1000*(10-20 Кб чистого контента) в memcached (а еще можно включить сжатие gzip в memcached) - вместо 50 Мб в mysql. И все таки cpu+ram быстрее чем cpu+hdd во много-много раз.