はい、キャッシュするまで、毎回解析されます。それは本当に時間を節約します(自分のプロジェクトでチェックしました)。
したがって、Zend_Cache_Frontend_File
を使用してiniファイルをキャッシュするにはどうすればよいですか?まあ、私は例を提供することができます。私は(可能であれば)キャッシュを使用してそれらをロード私のbootstrap.phpので
routes.ini
routes.showacc.route = "/@show/:city/:id/:type"
routes.showacc.type = "Zend_Controller_Router_Route"
routes.showacc.defaults.module = default
routes.showacc.defaults.controller = accommodation
routes.showacc.defaults.action = show
routes.showacc.defaults.city =
routes.showacc.defaults.type =
routes.showacc.defaults.id =
routes.showacc.defaults.title =
routes.showacc.reqs.id = "\d+"
;and more
:私のプロジェクトで、私は、カスタムルートの数が含まれているroute.iniファイルを持っています:
protected function _initMyRoutes() {
$this->bootstrap('frontcontroller');
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
// get cache for config files
$cacheManager = $this->bootstrap('cachemanager')->getResource('cachemanager');
$cache = $cacheManager->getCache('configFiles');
$cacheId = 'routesini';
// $t1 = microtime(true);
$myRoutes = $cache->load($cacheId);
if (!$myRoutes) {
// not in cache or route.ini was modified.
$myRoutes = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini');
$cache->save($myRoutes, $cacheId);
}
// $t2 = microtime(true);
// echo ($t2-$t1); // just to check what is time for cache vs no-cache scenerio
$router->addConfig($myRoutes, 'routes');
}
を次のようにキャッシュが私の
のapplication.iniに設定され
resources.cachemanager.configFiles.frontend.name = File
resources.cachemanager.configFiles.frontend.customFrontendNaming = false
resources.cachemanager.configFiles.frontend.options.lifetime = false
resources.cachemanager.configFiles.frontend.options.automatic_serialization = true
resources.cachemanager.configFiles.frontend.options.master_files[] = APPLICATION_PATH "/configs/routes.ini"
resources.cachemanager.configFiles.backend.name = File
resources.cachemanager.configFiles.backend.customBackendNaming = false
resources.cachemanager.configFiles.backend.options.cache_dir = APPLICATION_PATH "/../cache"
resources.cachemanager.configFiles.frontendBackendAutoload = false
希望します。
マルチン、あなたのポストは、私を助けて、今私はそれを使用して、より良い性能を持っています。しかし、キャッシュオブジェクトをロードしようとするのではなく、次のようにしてください: $ cache = $ cacheManager-> getCache( 'configFiles'); 次のように最初に存在するかどうかチェックします。 if($ cacheManager-> hasCache($ routeCache)){ $ cache = $ cacheManager-> getCache($ routeCache); // ... } –
私のために働いた。ありがとう。 –