TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #5913 1.85K
Стратегии кэширования и лучшие практики

🔧 Что такое кэширование и зачем оно нужно?

Кэширование — это процесс хранения часто запрашиваемых данных в быстродоступном месте, чтобы снизить нагрузку на более медленные источники данных, такие как базы данных или внешние API. Это позволяет значительно ускорить работу приложения.
Существует несколько уровней кэширования:

Кэширование вывода: хранение окончательного HTML-вывода страницы для последующих запросов.
Кэширование объектов: хранение результатов запросов к базе данных или API в виде PHP-объектов.
Кэширование опкода: хранение скомпилированного байт-кода PHP-скриптов, чтобы избежать повторного парсинга.

💡 Популярные технологии кэширования в PHP

Redis: это хранилище данных в памяти, поддерживающее различные структуры данных, такие как строки, хэши, списки, множества и отсортированные множества. Redis идеально подходит для кэширования структурированных данных и выполнения сложных операций над ними.
Примеры использования Redis:
Ленты новостей и активность пользователей: использование отсортированных множеств Redis для эффективного хранения и извлечения упорядоченных постов или действий.
Таблицы лидеров и рейтинги: использование отсортированных множеств Redis для поддержания актуальных рейтингов в реальном времени.
Счётчики и ограничение частоты запросов: использование атомарных операций Redis для поддержания счётчиков и реализации ограничения частоты запросов.

Memcached: это высокопроизводительная распределённая система кэширования объектов в памяти. Она предназначена для снижения нагрузки на базу данных путём кэширования данных и объектов в ОЗУ.
Примеры использования Memcached:
Результаты запросов к базе данных: кэширование результатов дорогих запросов к базе данных для значительного снижения нагрузки на сервер базы данных.
Рендеринг HTML-фрагментов: кэширование отрендеренных частей страниц (например, заголовков, футеров или содержимого боковой панели) для ускорения генерации страниц.
Ответы API: кэширование ответов от внешних API для снижения задержки и повышения надёжности.

APCu: это расширение PHP, предоставляющее кэширование данных в памяти для переменных PHP. В отличие от Redis и Memcached, APCu является локальным для сервера, на котором работает PHP, что делает его очень быстрым, но менее масштабируемым.
Примеры использования APCu:
Конфигурация приложения: кэширование настроек конфигурации, которые часто читаются, но редко изменяются, для снижения I/O на диск и повышения производительности.
Мемоизация: использование APCu для хранения результатов дорогих вычислений, что позволяет избежать повторных вычислений.

📌 Рекомендации по использованию
Redis: рекомендуется использовать для кэширования структурированных данных, реализации очередей сообщений и управления сессиями в многосерверных конфигурациях.
Memcached: подходит для кэширования простых данных и объектов, особенно в односерверных или маломасштабных приложениях.
APCu: идеален для кэширования данных, специфичных для одного сервера, таких как конфигурационные параметры или результаты вычислений.

⚙️ Другие стратегии оптимизации производительности PHP
Оптимизация кода: написание эффективного кода путём минимизации циклов, использования соответствующих структур данных и избегания ненужных вычислений.
Асинхронная обработка: перемещение ресурсоёмких задач (например, отправка электронной почты или генерация отчётов) в фоновую очередь для поддержания отзывчивости основного приложения.
Оптимизация базы данных: обеспечение правильной индексации базы данных, оптимизация запросов и извлечение только необходимых данных.
Расширения PHP: использование расширений PHP, написанных на более низкоуровневых языках (например, C), для производительных частей приложения.
Кэширование опкода: использование кэширования опкода, такого как OPcache, для хранения скомпилированных PHP-скриптов в памяти, что снижает накладные расходы на парсинг и компиляцию кода.

🔗 Пример из реальной практики на Medium
More from @phpproglib
  1. Sep 25, 2026🌞 PHP умеет искать в массиве без foreach В PHP 8.4 появились array_find(), array_find_key…
  2. Sep 24, 2026👍 5 способов встроить AI в Laravel Laravel AI SDK позволяет добавлять AI-функции прямо в…
  3. Sep 23, 2026🛠 Symfony 8.2 научился автоматически генерировать JSON Schema для конфигурации приложения…
  4. Sep 23, 2026🚀 Свежий релиз Laravel 13 с набором улучшений и исправлений ✅ добавлена поддержка valkey:…
  5. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  6. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →