maegnes / slim-caching-manager
SLIM 框架的缓存管理器
v1.0.0
2015-12-10 13:07 UTC
Requires
- php: >=5.3.3
- slim/slim: 2.*
This package is not auto-updated.
Last update: 2024-09-28 15:59:59 UTC
README
在 https://github.com/codeguy/Slim 下工作 ~2.3 (>= 2.3 AND < 3.0)
SlimCachingManager 帮助您简化 Slim 框架资源的缓存和缓存数据的交付。它将每个资源的缓存数据(如 etag、过期时间、最后修改时间等)存储在 ResourceHandlers 中,您可以通过实现 IResourceHandler 来编写自己的 ResourceHandlers。
这对于没有物理变化来检测资源是否已更改的资源非常有用(例如,数据库查询结果)。您可以定义想要缓存的资源(允许通配符表示法)。SlimCachingManager 将自动检查资源是否应该或正在被缓存。其余部分相当简单。
您想使用 SlimCachingManager?只需按照页面底部的步骤操作。所有您的头信息(Etag、Lastmodified、expiry)将由 SlimCachingManager 设置。
如果您有任何问题或建议改进 SlimCachingManager,请随时联系我。如果您想做出贡献,请添加一个新的分支并给我发送一个 pull request。
最好的问候,Magnus
通过 Composer 安装
将以下依赖项添加到您的 composer.json 文件中。
{
"require": {
"maegnes/slim-caching-manager": "dev-master"
}
}
用法
- 创建 Slim 实例
- 将需要缓存的资源添加到 ResourceMapper 中(允许通配符!)
- 添加 before.dispatch 钩子或中间件(在示例中是通过钩子完成的)
- 创建 SlimCachingManager\ResourceMapper\Etag() 或 SlimCachingManager\ResourceMapper\Lastmodified() 实例(取决于所需的缓存方法)
- 将 ResourceHandler 注入到 ResourceMapper 中
- 将 Slim 应用程序注入到 ResourceMapper 中
- 调用 setHeaders() 方法
示例
<?php
# 1. Create Slim instance
$app = new Slim();
# 2a. Add resource '/fetch/my/resource/' to my cache list
\SlimCachingManager\ResourceMapper\Base::addResourceWildcard('/fetch/my/resource/', 24);
# 2b. It's also possible to pass a Array with the resource wildcards
\SlimCachingManager\ResourceMapper\Base::addResourceWildcard(
Array(
// Moderator data and list
'/fetch/moderator/data/' => 24,
'/fetch/moderator/list/' => 24,
)
);
# 3. You could also use a middleware. For that simple example i used a before.dispatch hook.
$app->hook('slim.before.dispatch', function () use ($app, $db) {
# 4. Create instance of your wished ResourceMapper (ETag() or Lastmodified())
$cachingManager = new \SlimCachingManager\ResourceMapper\ETag();
# 5. Inject your ResourceHandler, Slim instance and finally set the headers
$cachingManager->setHandler(new \SlimCachingManager\ResourceHandler\Textfile())
->setApplication($app) #6.
->setHeaders(); #7.
});
?>
如果您不想使用 "Textfile" Resourcehandler,只需通过实现 SlimCachingManager\ResourceHandler\IResourceHandler 来编写自己的!
祝您玩得开心!