slm / cache
Zend Framework 2 模块,用于启用基于路由的页面缓存
Requires
- php: >=5.3.3.
- zendframework/zendframework: >=2.0.0,<2.3.0-dev
This package is not auto-updated.
Last update: 2024-09-09 13:49:56 UTC
README
版本 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]
,您可能只想缓存 action
为 bar
的匹配,而不是 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')) ), ), ),