Кэширование данных

Кэширование данных

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

Для демонстрации решения задачи текущего урока, мы воспользуемся исходниками урока Вывод многоуровневого меню с неограниченным уровнем вложенности

скачать исходникискачать урок

Многоуровневое меню – это как раз тот элемент, который лучше всего покажет принцип и необходимость кэширования. Наше многоуровневое меню использует 2 ресурсоемкие операции – работа с БД и рекурсия. При использовании кэша мы можем избежать обеих операций. Вместо них мы просто считаем файл кэша с готовым html-кодом меню, и выведем это меню там, где нам нужно.

Итак, для вывода многоуровневого меню мы используем функцию view_cat(), которая не возвращает результат, а сразу выводит его на экран. Если мы хотим использовать кэширование, то нас не устраивает подобное поведение функции, нам нужно, чтобы функция именно возвращала код меню, а не выводила его на экран. Поэтому давайте немного изменим ее код, возвращая код:

Теперь в файле с меню получим результат работы функции в переменную $menu и выведем значение переменной:

Отлично! Меню выводится. Теперь добавим опцию кэширования. Давайте определимся с алгоритмом.

Сейчас мы в любом случае вызываем 2 функции – get_cat() и view_cat() – для вывода меню. Первая функция работает с БД, вторая – с рекурсией. Сейчас же мы должны работать с этими функциями по условию – только в том случае, если у нас нет файла кэша. Если же файл кэша есть и в нем есть содержимое, тогда мы просто считаем это содержимое, не обращаясь к двум указанным функциям.

В файле functions.php создадим 2 дополнительные функции – функция для создания файла кэша и для чтения этого файла.

Функция cache_file_create() в качестве параметров принимает данные для записи в файл кэша. Функция cache_file_read() в качестве параметра принимает путь к файлу кэша.

Теперь создадим папку для файлов кэша – cache. Файл с кэшем меню у нас будет называться menu.html. Давайте определим в индексном файле переменную, в которой будем хранить путь к файлу кэша:

Ну и создадим условие, согласно которому будем получать данные из кэша или из БД:

Итак, здесь все довольно просто. Мы проверяем, существует ли файл кэша. Если он существует – получаем результат работы функции cache_file_read(). Иначе – получаем данные из БД и записываем их в кэш функцией cache_file_create().

Осталось описать функции для работы с кэшем. Функция cache_file_create():

Функция cache_file_read():

Вот, собственно и все. Мы решили задачу создания простой системы кэширования для сайта. Теперь в Ваших силах улучшить ее и адаптировать под собственные нужды. Например, можно объединить обе функции кэширования в одну, можно учесть устаревание данных кэша для их автоматического периодического обновления и т.д.

На этом наш урок завершен. Удачи Вам и до новых встреч!

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии (4)