我尝试过使用memcached的不同方法。我没有找到关于如何在Symfony 3.3中使用它的完整解释,解决方案和良好实践。
问题1:https://symfony.com/blog/new-in-symfony-3-3-memcached-cache-adapter。
也许我在这里没有看到什么,但我如何告诉Symfony我想要缓存什么(元数据,查询,结果 - 我使用的是学说)?哪里可以找到更多配置选项?有什么我可以读到的吗?
运行stats命令会在内存中显示一些项目,但没有性能提升。什么都没有。我非常小心地遵循了步骤。有没有人知道我必须做更多的事情才能看到实际的结果吗?
我认为这不重要但是作为示例我使用的是简单的端点,它从数据库中获取帖子列表。
答案 0 :(得分:1)
请从您引用的博客(New in Symfony 3.3: Memcached Cache Adapter)中查看此示例:
$cacheProduct = $this->get('app.cache.products')->getItem($productId);
if (!$cacheProduct->isHit()) {
$product = ...
$cacheProduct->set($product);
$this->get('app.cache.products')->save($cacheProduct);
} else {
$product = $cacheProduct->get();
}
此缓存适配器将允许您将数据存储在内存中。此示例使用memcache,但您也可以使用Redis。你必须决定代码的哪一部分太昂贵了。在每个请求执行,并可以缓存。当缓存失效时,这也取决于你,这可能是一个真正的痛苦:
计算机科学有两个难点:缓存失效,命名事物和逐个错误。 https://twitter.com/codinghorror/status/506010907021828096
博客大约是Symfony's Cache Component,但也有DoctrineCacheBundle。它们之间的区别可能会引起一些混淆,因为您可以在没有Doctrine ORM的情况下使用Doctrine Cache,反之亦然。
如果您希望Doctrine使用metadata_cache
,result_cache
或query_cache
,请查看the configuration reference。遗憾的是,我无法在Symfony.com上找到任何有用的文档。
我认为您现在没有使用任何缓存机制,所以请尝试这样做。
如果您在实施缓存机制后仍遇到问题,可以打开一个单独的问题,其中包含更多详细信息。