3

젠드 프레임 워크 2 애플리케이션의 성능 최적화를위한 must-haves 중 하나는 구성 캐싱입니다. 아이디어는 하나의 큰 설정 파일 (실제로는 두 개의 파일, 예 : 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', 
    ], 
]; 

내가 좋아하는 것 좀 더를 최적화하고로드하기 in-memory 캐시 (예 : APCu)에서 구성합니다. 그것은 프레임 워크에 의해 제공됩니까? 또는이 기능을 직접 작성해야합니까?

답변

2

캐싱 메커니즘은 ModuleManager (write config & read config 공급원)의 ConfigListener 클래스에서 구현된다. 여기서 볼 수 있듯이 지원되는 유일한 캐싱 방법은 캐시 된 구성을 파일에 쓰는 것입니다.

그것은 다시 하드 MVC 모듈 (source)의 ModuleManagerFactory 부호화 된 DefaultListenerAggregate (source)에서 기본적으로 인스턴스화된다. 에

자신의 논리로이를 대체하기 위해, 당신은 것입니다 : 명시 적으로 설정하는

  • 변경 ModuleManagerFactory를 자신으로 ConfigListener 교체 (또는 적어도 각 부분을 확장)하여 게으 르기 생성되기 전에 DefaultListenerAggregate에 자신의 ConfigListener을 소유하십시오.

가능하지만 실제로 노력할 가치가 있다고 생각하지는 않습니다. 병합 된 설정 파일은 PHP 파일이므로 OpCache에 의해 캐시됩니다. OpCache는 궁극적으로 php에 최적화 된 메모리 내 캐시입니다. 따라서 모든 범용 메모리 내 상점보다 더 빠를 것으로 기대합니다.

관련 문제