Класс для работы с кешем.
Возвращает путь к файлу кеша, если кеш существует.
Пытается получить кеш по ключу и проверяет его актуальность. В случае удачи возвращает путь до файла кеша.
$check = array('file' => 'path/to/file.ext');
if (!$data = cache::get('test.txt', $check)){
// ...
cache::set($data);
}
$check = array(
'file' => array(
'path/to/file1.ext',
'path/to/file2.ext'
),
'db' => 'some_table'
);
// Если кеш существует, будет include потоу что ключ обозначен как PHP-файл
if (!$data = cache::get('test.php', $check)){
// ...
cache::set($data);
}
Вторым параметром можно задать массив с ключами проверки как то: file (пути к файлам или папкам; проверяется mtime), db (имена таблиц; проверяется Update_time) и/или http (ссылки; проверяется Last-Modified). Каждое значение каждого ключа может быть либо строкой, либо массивом.
кеш может работать с обьектами.
$table = new Table(2);
print_r(cache::get('test.php', $table)->fetch_array());
// Пример выше то же самое, что
if (!$data = cache::get('test.php')){
$data = $table->fetch_array();
cache::set($data);
}
print_r($data);
Обькты также могут с ключами проверки и тегами.
$table = new Table(2);
$check = array(
'file' => array(
'path/to/file1.ext',
'path/to/file2.ext'
),
'db' => 'some_table',
'tag' => array('tag1', 'tag2')
);
print_r(cache::get('test.php', $table, $check)->fetch_array());
// или
$tags = array('tag1', 'tag2');
print_r(cache::get('test.php', $table, $tags)->fetch_array());
Обратите внимание: при работе с обьектом теги задаются в массиве с ключами проверки либо, при отсутствии проверки, как самостоятельный массив. Сделано так потому что при работе с обьектами cache::get() выступает и как получатель кеша, и как его установщик.
Устанавливает кеш. Вторым параметром можно передать массив с тегами.
$check = array('file' => 'path/to/file.ext');
if (!$data = cache::get('test.txt', $check)){
// ...
cache::set($data, array('tag1', 'tag2'));
}
Обратите внимание: данный метод должен работать исключительно в паре с cache::get().
Удаляет кеш по ключу или по тегу, если параметр является массивом.
// Удалит ключ; вернёт булин
cache::remove('test.txt');
// Удалит кеш с тегом tag1; вернёт пустой массив либо массив удалённых ключей
cache::remove(array('tag1'));
Проверяет существование кеша по ключу. Возвращает пусть к файлу кеша в случае удачи.
// path/to/cache/test.php
print_r(cache::exists('test.php'));
Проверяет существование кеша по ключу и его актуальность. Возвращает true в случае удачи.
$check = array(
'file' => array(
'path/to/file1.ext',
'path/to/file2.ext'
),
'db' => 'some_table'
);
print_r(cache::expired('test.php', $check));