Jump to main content Jump to doc navigation

Глобальная конфигурация

Чтобы использовать возможности кэширования xPDO, вам необходимо настроить несколько глобальных параметров для определения параметров кэширования. Самое главное, вы должны определить xPDO::OPT_CACHE_PATH в переменной $options Конструктор xPDO. Установите абсолютный путь, по которому вы хотите, чтобы xPDO записывал файлы кэша. Это также указывает местоположение для xPDO для записи файлов журнала, если это настроено, что потребует определения этого пути к файлу, даже если не используется кэширование на основе файлов.

Есть несколько дополнительных глобальных опций, которые можно установить, если вы хотите использовать что-то, кроме раздела кэша по умолчанию и провайдера.

  • xPDO::OPT_CACHE_HANDLER - Это определяет провайдера кэша или производный класс xPDOCache, который реализует методы кэширования xPDO. (default=cache.xPDOFileCache)
  • xPDO::OPT_CACHE_KEY - Это определяет раздел кэша или экземпляр производного класса xPDOCache, определенного как обработчик кэша или провайдер. (default=default)
  • xPDO::OPT_CACHE_EXPIRES - Это определяет время истечения кеша по умолчанию в секундах для всех разделов кеша, если они не настроены специально.(default=0)

Дополнительные параметры определены для конкретных поставщиков кэша.

Кэширующие провайдеры и разделы

xPDO поддерживает расширение механизма кэширования для разных «провайдеров кэширования». Поставщик по умолчанию - xPDOFileCache, является реализацией файлового кэширования.

Базовый класс xPDOCache может быть расширен для создания различных поставщиков кэша, и пользователи могут настроить xPDO с помощью опции xPDO::OPT_CACHE_HANDLER для использования определенного производного класса.

Производная реализация xPDOCache должна находиться в пакете, который загружается конструктором. Вы можете использовать xPDO::OPT_BASE_PACKAGES, чтобы определить такие пакеты для предварительной загрузки или загрузки в ваш переопределенный конструктор при расширении класса xPDO.

Манипуляции с кешем

$xpdo->cacheManager объект, построенный из класса xPDOCacheManager, доступного после вызова $xpdo->getCacheManager().

Простой пример сценария установки данных в раздел кеша, затем их получения и удаления выглядит следующим образом:

$str = 'Мои кэшированные данные.';
$xpdo->cacheManager->set('testdata', $str);

echo $xpdo->cacheManager->get('testdata');
// outputs: Мои кэшированные данные.

$xpdo->cacheManager->delete('testdata');

При этом используется глобальная конфигурация кэша для установки, извлечения и удаления записи кэша. Это будет раздел кеша по умолчанию, используемый xPDOCacheManager.

Использование определенных разделов кэша

Чтобы нацелить данные кеша в конкретный раздел, вам нужно будет либо передать конфигурацию, определяющую раздел, каждому вызову метода из xPDOCacheManager, либо извлечь определенный раздел поставщика кеша и напрямую использовать его методы.

Пример передачи конфигурации в методы xPDOCacheManager:

$cacheOptions = array(
    xPDO::OPT_CACHE_KEY => 'myCache',
    xPDO::OPT_CACHE_HANDLER => 'cache.xPDOAPCCache',
);

$xpdo->cacheManager->set('testdata', 'Мои кэшированные данные.', 0, $cacheOptions);

echo $xpdo->cacheManager->get('testdata', $cacheOptions);
// outputs: Мои кэшированные данные.

$xpdo->cacheManager->delete('testdata', $cacheOptions);

При этом будет использоваться экземпляр xPDOAPCCache и префикс всех записей с cacheMe, поскольку APC не допускает множественные экземпляры, и для его использования записи должны быть разделены на экземпляр xPDOCache по их ключу.

Альтернативный подход состоит в том, чтобы получить конкретный раздел кэша и использовать его методы напрямую:

$myCache = $xpdo->cacheManager->getCacheProvider('myCache', array(
    xPDO::OPT_CACHE_KEY => 'myCache',
    xPDO::OPT_CACHE_HANDLER => 'cache.xPDOAPCCache',
));

$myCache->set('testdata', 'Мои кэшированные данные.');

echo $myCache->get('testdata');
// outputs: Мои кэшированные данные.

$myCache->delete('testdata');

Смотрите также

  1. Caching Tutorial - Basic Snippets
  2. Caching Tutorial - Lifetimes

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • Fabian Christen
  • Dannevang Digital
  • Sepia River Studios
  • Chris Fickling
  • CrewMark
  • deJaya
  • eydolan
  • Lefthandmedia
  • Murray Wood
  • Following Sea
  • Anton Tarasov
  • Stéphane Jäggi
  • Raffy
  • Snow Creative
  • A. Moreno
  • Nick Clark
  • JT Skaggs
  • Helen
  • YJ
  • krisznet
  • Richard
  • Yanni

Budget

$306 per month—let's make that $500!

Learn more