Кэширование
Последнее обновление Jan 27th, 2020 | История страницы | Улучшить эту страницу | Сообщить о проблеме
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
Budget
$311 per month—let's make that $500!
Learn moreГлобальная конфигурация¶
Чтобы использовать возможности кэширования 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');
Смотрите также¶
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
Budget
$311 per month—let's make that $500!
Learn more