Memcached. Структура хранения данных на сервере

Есть пример класса для кеширования страниц. Непонятно, что мы проверяем в инструкции if ($this->isCached($this->id($id))). Это ключ сохраненный в кеше? И что он должен содержать? Он формируется с помощью метода id. То есть получается строка static_page_1, например. Дальше мы инициализируем объект содержимым кэша. То есть в кеше еще содержатся ключи static_page_content и static_page_title? Мне непонятна именно структура хранения данных в кеше. Вот этри строки, которые мы сформировали, это именно ключи сохраненные в кеше? И что тогда сожержит ключ static_page_1?

<?php ## Базовый класс для кэшируемых страниц
  require_once "Page.php";
  class Cached extends Page
  {
    // Время действия кэша
    protected $expires;
    // Хранилище
    protected $store;

    // Конструктор класса
    public function __construct($title = '', $content = '', $expires = 0)
    {
      parent::__construct($title, $content);
      $this->expires = $expires;
      // $this->store = new Memcached();
      // $this->store->addServer('localhost', 11211);
      // Размещение данных в хранилище
      $this->set($this->id('title'), $title);
      $this->set($this->id('content'), $content);
    }

    // Проверить есть ли позиция $key в кэше
    protected function isCached($key)
    {
      // return (bool) $this->store->get($key);
    }
    
    protected function set($key, $value, $force = false)
    {
      // if ($force) {
      //   $this->store->set($key, $value, $this->expires);
      // } else {
      //   if($this->isCached($key)) {
      //     $this->store->set($key, $value, $this->expires);
      //   }
      // }
    }
    // Извлечение значения $key из кэша
    protected function get($key)
    {
      // return $this->store->get($key);
    }

    // Формируем уникальный ключ для хранилища
    public function id($name)
    {
      die("Что здесь делать? Неизвестно!");
    }

    // Получение заголовка страницы
    public final function title()
    {
      // if ($this->isCached($this->id('title'))) {
      //   return $this->get($this->id('title'));
      // } else {
         return parent::title();
      // }
    }
    // Получение содержимое страницы
    public final function content()
    {
      // if ($this->isCached($this->id('content'))) {
      //   return $this->get($this->id('content'));
      // } else {
         return parent::content();
      // }
    }
  }
?>

<?php ## Статические страницы
  require_once "Cached.php";
  class StaticPage extends Cached
  {
    // Конструктор класса
    public function __construct($id)
    {
      // Проверяем нет ли такой страницы в кэше
      if ($this->isCached($this->id($id))) {
        // Есть, инициализируем объект содержимым кэша
        parent::__construct($this->title(), $this->content());
      } else {
        // $query = "SELECT * FROM static_pages WHERE id = :id LIMIT 1"
        // $sth = $dbh->prepare($query);
        // $sth = $dbh->execute($query, [$id]);
        // $page = $sth->fetch(PDO::FETCH_ASSOC);
        // parent::__construct($page['title'], $page['title']);
        parent::__construct("Контакты", "Содержимое страницы Контакты");
      }
    }

    // Уникальный ключ для кэша
    public function id($name)
    {
      return "static_page_{$name}";
    }
  }
?>

Ответы (0 шт):