Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 如何为基于ZF2文件的配置和模块映射缓存配置TTL?_Performance_Caching_Zend Framework2_Config_Ttl - Fatal编程技术网

Performance 如何为基于ZF2文件的配置和模块映射缓存配置TTL?

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

在Zend Framework 2中,可以将所有配置捆绑为文件中的合并阵列。对于模块类映射也可以这样做。它稍微提高了性能,并且易于设置(另请参见):

/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类中。然而,这只是一个理论,我不确定它是否会起作用。今天我们将尝试创建一个示例。