slm/cache

Zend Framework 2 模块,用于启用基于路由的页面缓存

v0.1.0 2013-12-05 12:21 UTC

This package is not auto-updated.

Last update: 2024-09-09 13:49:56 UTC


README

Build Status Latest Stable Version

版本 0.1.0 由 Jurian Sluiman 创建

要求

简介

安装

SlmCache 与 Composer 一起使用。要安装它,只需将以下行添加到您的 composer.json 文件中

"require": {
    "slm/cache": "~0.1"
}

文档

SlmCache 与配置的缓存存储适配器和可以缓存的路线列表一起使用。基于请求和匹配的路线,SlmCache 将从缓存中检索响应或不会。

配置缓存存储

缓存可以通过两种方式配置。第一种方法使用缓存存储工厂实例化一个新的缓存实例。第二种方法允许您指向服务定位器中的服务以获取现有的缓存服务。

在下面的示例中,所有 cache 内部的配置都将注入到 Zend\Cache\StorageFactory::factory() 方法中。这使您能够配置适配器、所有适配器选项以及如果需要,插件。

'slm_cache' => array(
    'cache'  => array(
        'adapter' => array(
            'name'    => 'apc',
            'options' => array('ttl' => 3600),
        ),
    ),
),

在这个示例中,配置只是一个字符串,指向一个服务。这使您能够在应用程序中有一个单一的缓存服务,该服务可以用于除了 SlmCache 之外的其他事情。

'slm_cache' => array(
    'cache'  => 'my-cache-adapter'
),

配置缓存前缀

缓存前缀用于对缓存数据进行命名空间,以便它不会与其他模块冲突。理想情况下,它应该是唯一的。

'slm_cache' => array(
    'cache_prefix' => 'my_cache_prefix_',
);

如果您没有指定缓存前缀,SlmCache 将默认为 'slm_cache_'。

配置要缓存的路线

可以缓存的路线必须在单个数组中配置。SlmCache 将将当前匹配的路线名称与该路线列表进行匹配。如果存在匹配项,则启用缓存机制。这允许您在单个应用程序中拥有非缓存的和缓存的路线。

如果触发 SlmCache,则将使用缓存来检索响应体。通过绕过 Zend Framework 2 的事件系统,此结果将直接返回给浏览器。这将绕过应用程序执行中的整个 EVENT_DISPATCH 部分。如果没有缓存命中,SlmCache 将等待应用程序完成整个响应的渲染。此响应将存储在缓存中,以便下次请求发生时,缓存将有一个命中。

要配置要缓存的路线,请将其设置在 routes 数组中

'slm_cache' => array(
    'routes'  => array(
        'home'  => array(),
        'about' => array(),
    ),
),

仅匹配某些 HTTP 方法的路线

您可能有一个既用于 GET 也用于 POST 的路线。您可以将 SlmCache 配置为仅保留 GET 版本的缓存版本,而不是缓存 POST。使用数组设置 match_method

'slm_cache' => array(
    'routes'  => array(
        'contact' => array('match_method' => 'GET'),
    ),
),

如果您需要,也可以匹配多个方法

'slm_cache' => array(
    'routes'  => array(
        'contact' => array('match_method' => 'GET', 'HEAD'),
    ),
),

仅匹配具有指定路线参数的路线

如果您有一个部分设置动作的段路线,您可能只想缓存特定的动作。对于路线 foo[/:action],您可能只想缓存 actionbar 的匹配,而不是 action 等于 baz。使用 match_route_params 标志来配置此过滤。

'slm_cache' => array(
    'routes'  => array(
        'foo' => array(
            'match_route_params' => array('action' => 'bar')
        ),
    ),
),

您可以拥有多个允许的动作,但不是所有的。值可以是一个可能的动作数组

'slm_cache' => array(
    'routes'  => array(
        'foo' => array(
            'match_route_params' => array('action' => array('bar', 'baz'))
        ),
    ),
),