Zend Framework 2 应用程序性能优化的必备条件之一是配置的缓存。这个想法是将它们合并到一个大的配置文件(或者实际上是两个文件,例如 module-classmap-cache.php
和 module-config-cache.php
(,这样就不需要在每个请求时打开和合并配置文件。(请参阅官方文档中的信息以及 Rob Allen 文章"缓存 ZF2 合并配置"中的操作方法(:
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(加载配置。它是由框架提供的吗?还是我必须自己编写此功能?
缓存机制在ModuleManager
的ConfigListener
类中实现(写入配置和读取配置的来源(。正如您在那里看到的,唯一支持的缓存方法是将缓存的配置写入文件。
它在DefaultListenerAggregate
(源(中实例化为默认值,该再次在 MVC 模块(源(的ModuleManagerFactory
中硬编码。
为了将其替换为您自己的逻辑,您必须:
- 用您自己的
ConfigListener
替换(或至少扩展相应的部分( - 更改
ModuleManagerFactory
以在延迟创建DefaultListenerAggregate
之前在上显式设置您自己的ConfigListener
。
虽然可行,但实际上并不值得付出努力。由于合并的配置文件是一个php文件,因此无论如何它都应该被OpCache缓存。OpCache最终是一个php优化的内存缓存。所以我希望它比任何通用内存存储都快。