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

3

优化Zend Framework 2应用程序性能的必备条件之一是对配置进行缓存。其思想是将它们合并为一个大的配置文件(实际上是两个文件,例如module-classmap-cache.phpmodule-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)中加载配置。框架是否提供此功能?还是我需要自己编写此功能?

1个回答

2
缓存机制实现在ModuleManagerConfigListener类中(源自写入配置读取配置)。 正如您在那里看到的,唯一支持的缓存方法是将缓存配置写入文件。
它作为默认值实例化在DefaultListenerAggregate中(源代码),这又是硬编码在MVC模块的ModuleManagerFactory中(源代码)。
为了用您自己的逻辑替换它,您需要:
ConfigListener替换为自己的(或至少扩展相应部分)
ModuleManagerFactory更改为在惰性创建之前明确设置自己的ConfigListenerDefaultListenerAggregate上。
虽然可行,但我认为这并不值得努力。由于合并的配置文件是一个php文件,因此它应该被OpCache缓存。而OpCache最终是一个php优化的内存缓存。因此,我预计它甚至比任何通用内存存储都要快。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接