Zend Framework 2应用程序性能优化的must-haves之一是配置的缓存。我们的想法是将它们合并到一个大配置文件(或实际上是两个文件,例如module-classmap-cache.php
和module-config-cache.php
),这样就不需要在每个请求上打开和合并配置文件。 (请参阅official documentation中的信息以及Rob Allen“Caching your ZF2 merged configuration”文章中的操作方法):
application.config.php
return [
'modules' => [
...
],
'module_listener_options' => [
...
'config_cache_enabled' => true,
'config_cache_key' => 'app_config',
'module_map_cache_enabled' => true,
'module_map_cache_key' => 'module_map',
'cache_dir' => './data/cache',
],
];
我想更优化它并从内存缓存(例如APCu)加载配置。它是由框架提供的吗?或者我是否必须自己编写此功能?
答案 0 :(得分:2)
缓存机制在ConfigListener
的{{1}}类中实现(write config& read config的来源)。
正如您所看到的,唯一受支持的缓存方法是将缓存配置写入文件。
它在ModuleManager
(source)中被实例化为默认值,它再次在MVC模块DefaultListenerAggregate
中进行了硬编码(source)。
为了用你自己的逻辑替换它,你必须:
ModuleManagerFactory
替换为您自己的(或至少扩展相应的部分)ConfigListener
以在ModuleManagerFactory
上显式设置自己的ConfigListener
,然后才能进行延迟创建。虽然可行,但它并不认为实际上值得付出努力。由于合并的配置文件是一个php文件,它应该被OpCache缓存。 OpCache最终是一个php优化的内存缓存。所以我希望它比任何通用的内存存储都快。