如何在Zend Framework 2中缓存内存中的应用程序配置?

时间:2016-11-13 00:47:40

标签: php performance caching zend-framework2 configuration-files

Zend Framework 2应用程序性能优化的must-haves之一是配置的缓存。我们的想法是将它们合并到一个大配置文件(或实际上是两个文件,例如module-classmap-cache.phpmodule-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)加载配置。它是由框架提供的吗?或者我是否必须自己编写此功能?

1 个答案:

答案 0 :(得分:2)

缓存机制在ConfigListener的{​​{1}}类中实现(write config& read config的来源)。 正如您所看到的,唯一受支持的缓存方法是将缓存配置写入文件。

它在ModuleManagersource)中被实例化为默认值,它再次在MVC模块DefaultListenerAggregate中进行了硬编码(source)。

为了用你自己的逻辑替换它,你必须:

  • ModuleManagerFactory替换为您自己的(或至少扩展相应的部分)
  • 更改ConfigListener以在ModuleManagerFactory上显式设置自己的ConfigListener,然后才能进行延迟创建。

虽然可行,但它并不认为实际上值得付出努力。由于合并的配置文件是一个php文件,它应该被OpCache缓存。 OpCache最终是一个php优化的内存缓存。所以我希望它比任何通用的内存存储都快。