У меня проблемы с получением кэша Symfony для возврата кэшированных данных. Вместо этого он генерирует новую версию данных при каждой загрузке страницы.
Я сохраняю записи журнала при каждой загрузке страницы, на этапе создания данных и при отображении данных. Это говорит мне, когда контроллер должен использовать кэшированные данные или когда он регенерирует свежие данные.
require 'vendor/autoload.php';
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
$cache = new FilesystemAdapter();
function _cached_announcements() {
global $cache;
return $cache->get('announcements', function(Symfony\Contracts\Cache\ItemInterface $item) {
$data = time().",announcements,GENERATE\n";
file_put_contents("log_cache", $data, FILE_APPEND);
$item->expiresAfter(900); // 900 seconds = 15 minutes
return get_announcements(1); // this function loads the announcements from the database
});
}
$data = "\n".time().",announcements,PAGELOAD\n";
file_put_contents("log_cache", $data, FILE_APPEND);
$announcements = _cached_announcements();
$data = time().",announcements,DISPLAY\n";
file_put_contents("log_cache", $data, FILE_APPEND);
Я бы ожидал увидеть запись "GENERATE" только один раз в журнале. Вместо этого я получаю это в журнале. Как вы можете видеть, записи находятся на расстоянии нескольких секунд, хотя я сказал контроллеру, чтобы он держал кэшированные данные в течение 900 секунд.
1572537363,announcements,PAGELOAD
1572537363,announcements,GENERATE
1572537363,announcements,DISPLAY
1572537363,announcements,PAGELOAD
1572537363,announcements,GENERATE
1572537363,announcements,DISPLAY
1572537364,announcements,PAGELOAD
1572537364,announcements,GENERATE
1572537364,announcements,DISPLAY
Спасибо за помощь!