我无法让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
感谢您的帮助!