Кэширование данных в своем модуле для DLE на DLE API
Когда я только начинал работать с CMS DataLife Engine, а именно писать свои дополнения для этого движка, я пренебрегал многими нюансами, которые рекомендуется в первую очередь внедрять в ту или иную наработку для этой CMS.
И, как вы уже поняли, сегодняшнюю статью я посвящу кэшированию данных. Кэширование (кэш) во многих случаях помогает значительно оптимизировать (ускорить) работу сайта, сократив тем самым чисто SQL-запросов и частое выполнение сложных алгоритмов.
В DataLife Engine существует встроенное API. Конечно, оно не обновлялось долгое время (насколько мне известно), но все же оно имеет набор готовых методов, которые позволяют решить самые разные задачи. Именно с помощью API мы и создадим кэш для своего модуля.
Итак, первое, что вам необходимо сделать – это в начале вашего модуля подключить файл API:
include('engine/api/api.class.php');
А далее (в этом же файле) внедряем такую конструкцию:
// Здесь лучше разместить уникальные запросы и код, которых не нужно кэшировать.
$use_cache = $dle_api->load_from_cache('my_modules', 3600, 'text');
if($use_cache === false) { // Если кэш отсутствует или больше указанного времени.
// Неуникальные запросы и различная информация, которую необходимо кэшировать. Вставлять в переменную $content.
$dle_api->save_to_cache('my_modules', $content); // Сохраняем/обновляем указанный кэш
echo $content; // Выводим значение $content, так как кэш мы только создали/обновили
} else { // Если кэш существует и он меньше указанного времени.
echo $use_cache; // Выводим данные из кэша
}
Я постарался максимально ее расписать, то есть обозначить те области, куда и какие запросы/алгоритмы желательно вставлять.
Здесь:
- my_modules – это название кэша, пишите свое по желанию, уникальное для каждого модуля.
- 3600 – время жизни кэша в секундах. В случае, если кэш устарел – происходит его перезапись (обновление).
- text – данные возвращать в том виде, что записали. Если значение отличное от «text» – данные будут возвращены в виде массива.
Вот вроде и все. Если остались вопросы по внедрению функции кэширования данных в свой модуль для DataLife Engine – пишите об этом в комментариях, постараюсь вам помочь.