Кэширование тяжелых функций

babahalki

Постоялец
Регистрация
6 Май 2016
Сообщения
247
Реакции
107
Прошу прощения, если тема уже поднималась. Ничего не нашел.

В нашей cms есть 3 тяжелых метода, которые выполняются почти постоянно. Оптимизация запросов к бд не позволяет заметно ускорить выполнение.

Хотим прикрутить кэширование результатов методов.

Кто решал такую задачу - откликнитесь.

Что будет быстрее делать кэш в mysql или писать на диск?

Есть ли готовые решения?
 
Прошу прощения, если тема уже поднималась. Ничего не нашел.

В нашей cms есть 3 тяжелых метода, которые выполняются почти постоянно. Оптимизация запросов к бд не позволяет заметно ускорить выполнение.

Хотим прикрутить кэширование результатов методов.

Кто решал такую задачу - откликнитесь.

Что будет быстрее делать кэш в mysql или писать на диск?

Есть ли готовые решения?

redis - самый универсальный вариант
memcached - оптимальное решение, если нужно хранить статику
query_cache - не вариант, т.к. становится невалидным при любых изменениях таблиц (UID)

Для просмотра ссылки Войди или Зарегистрируйся
 
query_cache - не вариант, т.к. становится невалидным при любых изменениях таблиц (UID)
Это как раз нормально, любой приличный инструмент записи в кеш должен иметь возможность расширенных правил инвалидации кеша. Иначе можно нарваться на приколы при редактировании контента сайта.

В нашей cms есть 3 тяжелых метода, которые выполняются почти постоянно. Оптимизация запросов к бд не позволяет заметно ускорить выполнение.

Всё решается индивидуально в зависимости от ситуации.
Кеширование на диск тоже приемлемо, особенно для случаев когда мы этот кеш будем отдавать напрямую клиенту (не задействуя php) Или если использовать redis / memcached не возможно по причине их отсутствия или Для просмотра ссылки Войди или Зарегистрируйся.

В любом случае проводите нагрузочное тестирование - бывают ситуации, когда с кешем скрипт работал медленнее, чем в его отсутствии.

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

Сделал кеширование непосредственно в нужных методах, чтобы ключ с конкретными параметрами был компактным сделал вот так.

$key = "get_images"."_".hash(MD4, serialize($filter));
 
Назад
Сверху