Как "обновить" кэш apc в приложении с высоким трафиком?
Мое приложение Symfony имеет ~500 пользователей в сети, и список некоторых статей доступен на всех страницах. Я сохраняю запрос и результат в APC, который вручную удаляется администратором при изменении некоторых данных. Вот проблема:
Если я прав, если каждый из моих 500 пользователей обновляет страницу при удалении кеша и пытается обновить его (первым запросом к базе данных), остальные 499 наносят вред базе данных до того, как кеш будет выполнен.
Как избежать этой ситуации? Есть ли какая-либо опция в APC, которая предотвращает это, или мне нужно управлять этим вручную? Лучше всего обслуживать старый кеш, если новый еще не готов.
2 ответа
К сожалению, я боюсь, что нет решения из коробки. Если вы посмотрите на Memcached Bundle, они реализуют решение, чтобы избежать этой проблемы: введите описание ссылки здесь
Может быть, вы можете вдохновить написать свое собственное решение.
Если это общее для всех пользователей, вы можете подготовить данные для кеширования с помощью фонового скрипта и выполнить их с помощью cron. Также можно добавить версию в ключи кеша для этих данных, хранить версию тоже в apc. При подготовке данных к кешу увеличьте версию и сохраните новые данные с новой версией, затем измените версию в apc.