Для демонстрації рішення задачі поточного уроку, ми скористаємося вихідними кодами уроку Висновок багаторівневого меню з необмеженим рівнем вкладеності
Багаторівневе меню - це як раз той елемент, який найкраще покаже принцип і необхідність кешування. Наше багаторівневе меню використовує 2 ресурсомісткі операції - робота з БД і рекурсія. При використанні кеша ми можемо уникнути обох операцій. Замість них ми просто вважаємо файл кеша з готовим html-кодом меню, і виведемо це меню там, де нам потрібно.
Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком
Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2
Отже, для виведення багаторівневого меню ми використовуємо функцію 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 ():
На цьому наш урок завершено. Удачі Вам і до нових зустрічей!
Фреймворк YII2. Швидка розробка з сучасним PHP фреймворком
Дізнайся тонкощі сучасної веб-розробки за допомогою фреймворка YII2
Найсвіжіші новини IT і веб-розробки на нашому Telegram-каналі