В настоящее время я использую кеш Apc в приложении CakePHP. У меня есть тысячи списков, которые я хочу кэшировать как отдельные объекты, которые можно читать, обновлять и перезаписывать независимо. Затем я кэширую группы listing_id отдельно. Существуют некоторые дорогостоящие расчеты на основе местоположения, которые включают в себя вычисление группировки листинговых_файлов, которые должны быть загружены (это приложение карт), поэтому этот список листинговых_положений необходимо кэшировать.CakePHP Кэш Apc слишком часто недействителен
Данные о листингах также могут обновляться и сохраняться через приборную панель. Кэширование отлично работает до тех пор, пока я не сохраню конкретный список, и в этот момент все кэшированные данные становятся недействительными. Когда я возвращаюсь к карте и загружаю группу списков, эти списки больше не кэшируются.
Некоторые более специфические о реализации:
- Моя конфигурация кэша я использую как для списка listing_ids и индивидуальных данных списков:
Cache :: конфигурации ('Config1', массив (
'engine' => 'Apc',
'duration'=> 10000000,
'probability'=> 100,
'path' => CACHE,
'prefix' => 'cake_',
'lock' => false,
'serialize' => true,
'mask' => 0666,
));
Для инициализации отдельных записей гр ache при загрузке карты, я просто перебираю списки, возвращенные из базы данных, кэшируя каждый из них с их добавлением listing_id до конца, например:
Cache :: write ('Listing -'. $ id, $ listing , 'Config1');
Я был в состоянии обеспечить правильное сохранение групп listing_id. Строка выше аналогична используемой при обновлении листинга на панели управления, как описано выше.
Моя цель - обновить одно конкретное объявление в кеше, не касаясь остальных кэшированных списков. Кажется простой задачей, но я потратил несколько часов на расследование и не смог найти решение.