我们有一个基于Symfony 3.2(当时是Symfony 2.3开始)和Doctrine ORM 2.5的正在运行的应用程序,它是如何发展的。试图理解和实现Symfony 3 Caching for Framework和Doctrine
我读了很多关于新的Symfony缓存组件,APC和APCU的up和down,opcache,Symfony中chaching的pull request等等,但这次真的很诚实,你让我失望了一下。
所以我恳请一个人能否支持我1)理解和2)为生产中的“标准”Symfony/Doctrine应用程序实现缓存。
前提条件/假设
1)opcache应启用,并主动和缓存内容的字节码有关。
2)我目前没有任何要求来缓存我自己的应用程序的东西。这是关于像注释,类映射,验证,ORM元数据等框架缓存。
2)大多数开发人员不想处理多个缓存提供程序,所以它是APCu,xcache,redis,memcache或还要别的吗。对于不同的任务可能有很多不同的理由,但让我们坚持一个以保持简单。
在PROD模式 “标准” 的Symfony /原则应用缓存选项
1)类加载
我们仍然在app.php
有ApcClassLoader到位:
$loader = require __DIR__ . '/../app/autoload.php';
include_once __DIR__ . '/../var/bootstrap.php.cache';
$apcLoader = new ApcClassLoader('arcsf2', $loader);
$apcLoader->register(true);
$loader->unregister();
require_once __DIR__ . '/../app/AppCache.php';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$kernel = new AppCache($kernel);
只有两个选项Symfony内置在我的理解中,ApcClassLoader和XcacheClassLoader。所以这可能与上面的假设2相矛盾。
问:
它仍然需要/所需/执行显著更好地已建立了此缓存的类加载器?
现在是否足够使用标准的app.php?
$loader = require __DIR__.'/../app/autoload.php';
include_once __DIR__.'/../var/bootstrap.php.cache';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
2)验证缓存
我们仍然有这个在我们config_prod.yml
:
framework:
validation:
cache: validator.mapping.cache.doctrine.apc
问:
要很诚实,我不知道,这是否仍然是VA Symfony 3.2和新的缓存组件。以及如何将其更改为不同的缓存提供程序(如果需要)。我怎么能改变它与Symfony 3.2 Cache的'最新'?
3)学说缓存:
或多或少同样的问题适用于学说ORM节config_prod.yml
:
doctrine:
orm:
metadata_cache_driver: apc
result_cache_driver: apc
query_cache_driver: apc
问题:
这仍然是要走的路?如何改变这个使用新的Symfony缓存组件 - 这可以做到这一点吗?
4)新选项?
新的呢?选择?的设定config_prod.yml
:
framework:
cache:
app: cache.adapter.someProviderOrPool
system: cache.adapter.someProviderOrPool
问题:
什么样的信息在这里缓存,由何人并不知何故这个替换/扩展上面的一些议题是什么?
概括起来:
我想根本上改变我所有的督促CONFIGS是complient与Symfony的3.2,我想使用Redis的缓存(更换APC)只要可能,但我完全不知道如何以及从哪里开始。
**** ****编辑
同样在这种情况下怎么办Symfony的缓存组件和DoctrineCacheBundle一起玩?更换?加起来?建立在?一起工作?冲突?不可比较?
为什么downvote?或者至少可以一个downvoter很快评论如何改善这个问题? – LBA