Performance 如何为基于ZF2文件的配置和模块映射缓存配置TTL?
在Zend Framework 2中,可以将所有配置捆绑为文件中的合并阵列。对于模块类映射也可以这样做。它稍微提高了性能,并且易于设置(另请参见):Performance 如何为基于ZF2文件的配置和模块映射缓存配置TTL?,performance,caching,zend-framework2,config,ttl,Performance,Caching,Zend Framework2,Config,Ttl,在Zend Framework 2中,可以将所有配置捆绑为文件中的合并阵列。对于模块类映射也可以这样做。它稍微提高了性能,并且易于设置(另请参见): /config/application.config.php return array( ... 'module_listener_options' => array( ... 'config_cache_enabled' => true, 'config_cache_ke
/config/application.config.php
return array(
...
'module_listener_options' => array(
...
'config_cache_enabled' => true,
'config_cache_key' => 'app_config',
'module_map_cache_enabled' => true,
'module_map_cache_key' => 'module_map',
'cache_dir' => './data/cache',
),
);
缓存是基于文件的(至少我没有找到使用基于内存的缓存的方法,比如memcached
)
是否可以/如何定义Zend Framework 2中配置缓存的生存时间?是的,缓存基于文件。唯一的原因是,这是在引导应用程序之前使用的配置。因此,使用所有位加载Zend\Cache并不是一种理想的情况(因为您更希望在配置服务管理器之后使用服务管理器配置,但仍在引导之前) ZF2中的所有配置都是文件,因此最简单的方法实际上是将所有文件合并在一起,并将它们写入一个文件中 接下来,这个缓存的TTL没有真正意义。只有在更改(基于文件的!)模块配置时,缓存才会失效。更改配置文件的唯一原因是在部署期间。毕竟,在开发和测试环境中,您不缓存配置,而在生产环境中,您只使用正确的部署(您是,对吗?;)
因此,正确的解决方案不是查看TTL,而是解决部署期间的缓存失效问题。如果用新文件覆盖应用程序,请删除缓存。如果在新文件夹(类似capistrano)中部署应用程序的新版本,则根本不会出现此问题。我认为这是不可能的。我所能想到的操作系统就是创建一个脚本,它只在生产环境中缓存所有目录(文档中有一个例子)。另一种方法可能是使用
Zend\Cache\StorageFactory
并创建自己的缓存。感谢您的评论!使用Zend\Cache\StorageFactory
“另一种方式”:您的意思是用Zend\Cache\Storage
对象包装缓存文件?Bot如何向应用程序“解释”它必须使用这个缓存对象而不是文件。您可以发布一个示例吗?当您使用abov代码创建缓存文件时,您可以使用addItem(),hasItem()
方法将其传递到cache\storage类中。然而,这只是一个理论,我不确定它是否会起作用。今天我们将尝试创建一个示例。