我开始写这篇文章,因为我正在努力让ZF2资产管理器正常工作,但是在中间摆动时我设法解决了问题,并且觉得仍然需要问题以便帮助别人。ZF2 - 资产管理器,放慢应用程序
如果你正在寻找一个资产管理的ZF2,尝试:https://github.com/RWOverdijk/AssetManager
我所面临的问题主要是由于缺乏文档和解决方案是非常简单的。
要使资产管理工作,您本质上需要生成应用程序可以找到的文件缓存。一旦文件被找到并且可以访问,你的应用程序将会加速。我遇到的第一个问题是module.config.php文件。文档不清楚如何正确设置它。
我的原始文件是这样的:
'asset_manager' => [
'resolver_configs' => [
'paths' => [
__DIR__ . '/../assets',
]
],
],
它实际上告诉我的应用程序在任何资产模块/资产目录中的样子。这个工作开箱但VEERY慢...
我读了关于缓存和我的我的文件的修改如下:
'asset_manager' => [
'caching' => [
'default' => [
'cache' => 'FilePath', // Apc, FilePath, FileSystem etc.
],
],
'resolver_configs' => [
'paths' => [
__DIR__ . '/../assets',
]
],
],
这什么也没做......所以在Github的搜索代码之后怎么看别人实施了资产管理,我发现你可以设置的地方放缓存选项...所以我的新的配置成为这样:
'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',
添加斜线把文件夹中的公共目录,回想起来是显而易见的,因为应用程序需要访问缓存的文件。
我的最终配置是这样的:
'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',
以上是超级快,并且使用的文件路径选择,是伟大的开发模式,它本质上生成/data.cache/assets目录中的文件的哈希值,但是对于生产环境,我更愿意将实际文件保存到assets/assets中的assets缓存中,因为这可以让应用抓取文件直接不需要在voke php。
注:
有我面临的另一个问题,这是由于误导文档
如果你看一下这行:
'cache' => 'Filesystem', // Apc, FilePath, FileSystem etc.
你可能会被加入您的使用CamelCase的文件...但是有些可能reauire CamelCase和其他人可能需要Normalcase ...检查代码...
你有没有试过通过github贡献它?我使用https://github.com/widmogrod/zf2-assetic-module,但我希望ZF2将这种事情作为标准组件包含在内。 – guessimtoolate 2014-09-08 07:20:59
这几乎可以做到这一点:https://github.com/RWOverdijk/AssetManager,它使用了Assetic。现在我已经可以正常工作了,多么棒的小模块。 – HappyCoder 2014-09-08 07:55:16