Zend framework2 ZF2-资产管理器,降低应用程序速度
我开始写这篇文章是因为我正努力让ZF2 Asset Manager正常工作,但在swing的中期,我成功地解决了问题,并且觉得为了帮助他人,仍然需要问这个问题 如果您正在寻找ZF2的资产管理器,请尝试: 我面临的问题本质上是由于缺乏文档,解决方案非常简单 要使asset manager正常工作,您基本上需要生成应用程序可以定位的文件缓存。一旦文件被定位并可访问,你的应用程序将大大加快速度。我面临的第一个问题是module.config.php文件。文档中不清楚如何正确设置 我的原始文件如下所示:Zend framework2 ZF2-资产管理器,降低应用程序速度,zend-framework2,Zend Framework2,我开始写这篇文章是因为我正努力让ZF2 Asset Manager正常工作,但在swing的中期,我成功地解决了问题,并且觉得为了帮助他人,仍然需要问这个问题 如果您正在寻找ZF2的资产管理器,请尝试: 我面临的问题本质上是由于缺乏文档,解决方案非常简单 要使asset manager正常工作,您基本上需要生成应用程序可以定位的文件缓存。一旦文件被定位并可访问,你的应用程序将大大加快速度。我面临的第一个问题是module.config.php文件。文档中不清楚如何正确设置 我的原始文件如下所示:
'asset_manager' => [
'resolver_configs' => [
'paths' => [
__DIR__ . '/../assets',
]
],
],
这实际上告诉我的应用程序在module/assets目录中查找任何资产。这解决了问题,但速度很慢
我阅读了有关缓存的内容,我对文件的修改如下:
'asset_manager' => [
'caching' => [
'default' => [
'cache' => 'FilePath', // Apc, FilePath, FileSystem etc.
],
],
'resolver_configs' => [
'paths' => [
__DIR__ . '/../assets',
]
],
],
这没用。。。因此,在gitHub中搜索代码以查看其他人如何实现Asset Manager后,我发现您可以设置缓存放置位置的选项。。。因此,我的新配置如下:
'asset_manager' => [
'caching' => [
'default' => [
'cache' => 'FilePath', // Apc, FilePath, FileSystem etc.
'options' => [
'dir' => getcwd() . 'public',
]
],
],
'resolver_configs' => [
'paths' => [
__DIR__ . '/../assets',
]
],
],
尽管我的应用程序根目录中名为:trunkpublic的文件夹中正在生成资产,但我的应用程序仍然无法工作。在经历了许多挫折之后,我意识到我需要更新:
'dir' => getcwd() . 'public', to 'dir' => getcwd() . '/public',
添加斜杠会将文件夹放在公用目录中,这在retrospect中很明显,因为应用程序需要访问缓存的文件
我的最终配置如下:
'asset_manager' => [
'caching' => [
'default' => [
'cache' => 'FilePath', // Apc, FilePath, FileSystem etc.
'options' => [
'dir' => getcwd() . '/public',
//'dir' => getcwd() . '/data/cache/assets',
]
],
],
'resolver_configs' => [
'paths' => [
__DIR__ . '/../assets',
]
],
],
您会注意到我已将此片段注释掉:
//'dir' => getcwd() . '/data/cache/assets',
以上是超快速的,与Filepath选项一起使用,非常适合开发模式,它基本上会在/data.cache/assets目录中生成文件的散列,但是对于生产环境,我更喜欢将实际文件保存到:public/assets中的资产缓存中,因为这允许应用程序直接获取文件,而无需调用php
注意:
我还面临另一个问题,这是由于误导性的文件
如果你看这一行:
'cache' => 'Filesystem', // Apc, FilePath, FileSystem etc.
您可能会尝试使用CamelCase添加文件。。。然而,有些可能需要CamelCase,有些可能需要Normalcase。。。检查此代码…对我有效
'asset_manager' => array(
'caching' => array (
'default' => array(
'cache' => 'FilePath', // Apc, FilePath, FileSystem etc.
'options' => array(
'dir' => './public',
),
),
),
'resolver_configs' => array(
'paths' => array(
'MyModule' => __DIR__ . '/../public',
),
),
),
现在我尝试修复flter JSMin和jssqueak
加油 您是否尝试过通过github进行贡献?我使用了,但我希望ZF2能将这类东西作为标准组件包括在内。这基本上做到了:它使用了Assetic。现在我已经让它正常工作了,这是一个多么棒的小模块。