2014-09-06 53 views
2

我开始写这篇文章,因为我正在努力让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 ...检查代码...

+0

你有没有试过通过github贡献它?我使用https://github.com/widmogrod/zf2-assetic-module,但我希望ZF2将这种事情作为标准组件包含在内。 – guessimtoolate 2014-09-08 07:20:59

+0

这几乎可以做到这一点:https://github.com/RWOverdijk/AssetManager,它使用了Assetic。现在我已经可以正常工作了,多么棒的小模块。 – HappyCoder 2014-09-08 07:55:16

回答

0

适合我!

'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和JSSqueeze

坦克你!