Zend framework2 ZF2-资产管理器,降低应用程序速度

Zend framework2 ZF2-资产管理器,降低应用程序速度,zend-framework2,Zend Framework2,我开始写这篇文章是因为我正努力让ZF2 Asset Manager正常工作,但在swing的中期,我成功地解决了问题,并且觉得为了帮助他人,仍然需要问这个问题 如果您正在寻找ZF2的资产管理器,请尝试: 我面临的问题本质上是由于缺乏文档,解决方案非常简单 要使asset manager正常工作,您基本上需要生成应用程序可以定位的文件缓存。一旦文件被定位并可访问,你的应用程序将大大加快速度。我面临的第一个问题是module.config.php文件。文档中不清楚如何正确设置 我的原始文件如下所示:

我开始写这篇文章是因为我正努力让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。现在我已经让它正常工作了,这是一个多么棒的小模块。