3

Zend Framework 2アプリケーションのパフォーマンスを最適化するためのmust-havesの1つは、構成のキャッシュです。考え方は、1つの大きな設定ファイル(または実際には2つのファイル、例えばmodule-classmap-cache.phpmodule-config-cache.php)にそれらをマージすることです。そのため、設定ファイルをすべてのリクエストで開き、マージする必要はありません。 (「Caching your ZF2 merged configuration」ロブ・アレンの記事でofficial documentationでの情報と使い方を参照してください):Zend Framework 2のメモリにアプリケーションコンフィグをキャッシュする方法は?

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)からのコンフィギュレーション。それはフレームワークによって提供されていますか?または、この機能を自分で作成する必要がありますか?

答えて

2

キャッシング機構はModuleManagerwrite config & read configのソース)のConfigListenerクラスに実装されています。 ご覧のとおり、サポートされているキャッシュ方法は、キャッシュされた設定をファイルに書き込むことだけです。

それは再びハードMVCモジュール(source)のModuleManagerFactoryで符号化されDefaultListenerAggregatesource)のデフォルトとしてインスタンス化されます。独自のロジックでこれを交換するためには、あなたがしなければならない

:明示的に設定するために、独自でConfigListenerを交換(または少なくとも各部を拡張)

  • 変更ModuleManagerFactoryそれが怠惰に作成される前にをDefaultListenerAggregateに持っています。

実行可能ではありますが、実際にはそれが努力する価値があるとは思われません。マージされた設定ファイルはPHPファイルなので、とにかにOpCacheによってキャッシュされるはずです。そして、OpCacheは最終的にPHPに最適化されたメモリ内キャッシュです。だから、私はそれがより高速であることを期待していますすべての目的のインメモリストア。

関連する問題