Работа с кэшем сайта (phpFox)
08.02.2018 12:28:02 pm
Порой, чтобы получить одну строку, приходится выполнять сложный запрос, а то и больше, плюс выполнять, какие то дополнительные операции. Чтобы лишний раз не заставлять выполнять кучу разных действий, ради одной строки, необходимо, записывать данные в кэш движка и в следующий раз черпать информацию уже из кэша, а не выполнять многострочный код. Как мне показалось - это снижает нагрузку на сервер и экономим немного времени.
Сейчас я расскажу, как записать строку в кэш, как проверить наличие нужной записи в кэше и как ее от туда взять.
И так, сразу к примеру (код прокомментировал):
Теперь чуток подробнее: Первая строка кода:
Это установка параметров, по которым будет взята строка и будет осуществляться проверка наличия самой строки.
- "nameCache" - это имя каталога, что будет (или уже есть) в папке: file/cache/.
- "nameFile" - это имя файла, что будет помещен (или уже там) в папке: "nameCache". Файл записывается так: "nameFile.php". Содержимое файла выглядит так:
Вторая строка кода:
Получает строку и тут же проверяет ее наличие в кэше, то есть если не удалось получить строку, значит ее там нет, значит ее надо туда записать, что и делает строка кода, что находится между скобками условия:
Разумеется, что перед сохранением строки в кэши, ее надо сгенерировать.
Вот и все. После добавления строки в кэш, при следующих обращениях, строка будет взята из кэша. После очистки кэша, строка будет удалена и при обращении снова добавлена.
Будьте внимательны, в некоторых файлах движка, например, в библиотеках, работать с кэшем придется так:
То есть не через
Сейчас я расскажу, как записать строку в кэш, как проверить наличие нужной записи в кэше и как ее от туда взять.
И так, сразу к примеру (код прокомментировал):
// Установка параметров, по которым будет получена строка
$cache = $this->cache()->set(array('nameCache', 'nameFile'));
// Получение строки из кэша
// Если строки нет в кэше, она будет туда записана
if (!($line = $this->cache()->get($cache)))
{
/**
Тут сценарий, который сгенирирует строку и поместит ее в переменную "$line"
*/
// Сохранение строки в кэше
$this->cache()->save($cache, $line);
}
Теперь чуток подробнее: Первая строка кода:
$cache = $this->cache()->set(array('nameCache', 'nameFile'));
Это установка параметров, по которым будет взята строка и будет осуществляться проверка наличия самой строки.
- "nameCache" - это имя каталога, что будет (или уже есть) в папке: file/cache/.
- "nameFile" - это имя файла, что будет помещен (или уже там) в папке: "nameCache". Файл записывается так: "nameFile.php". Содержимое файла выглядит так:
<?php $aContent = 'Строка для кэша'; ?>
Вторая строка кода:
if (!($line = $this->cache()->get($cache)))
Получает строку и тут же проверяет ее наличие в кэше, то есть если не удалось получить строку, значит ее там нет, значит ее надо туда записать, что и делает строка кода, что находится между скобками условия:
$this->cache()->save($cache, $line);
Разумеется, что перед сохранением строки в кэши, ее надо сгенерировать.
Вот и все. После добавления строки в кэш, при следующих обращениях, строка будет взята из кэша. После очистки кэша, строка будет удалена и при обращении снова добавлена.
Будьте внимательны, в некоторых файлах движка, например, в библиотеках, работать с кэшем придется так:
$cache = Phpfox::getLib('cache');
$cacheId = $cache->set(array('nameCache', 'nameFile'));
if (!($line = $cache->get($cacheId)))
{
// Тут сценарий, который сгенирирует строку и поместит ее в переменную "$line"
$cache->save($cacheId, $line);
}
То есть не через
$this->cache()
, а через Phpfox::getLib('cache')
.- Жалоба