aklump/ slim-response-cache
Slim 中间件,用于缓存后续请求的响应。
0.2.1
2019-05-16 18:55 UTC
Requires
- slim/http-cache: ^0.4.0
This package is auto-updated.
Last update: 2024-09-17 06:18:43 UTC
README
摘要
本项目提供了一种缓存响应的方法,以便后续请求无需通过路由回调。如果路由回调涉及复杂的计算来生成内容,这非常有用。它基于 HTTP 缓存中间件,应替换该中间件使用。它自带基于文件的缓存存储,但支持通过 \AKlump\Slim\Middleware\ContentCacheInterface
使用其他类型的缓存。
快速开始
$container = $app->getContainer();
$container['cache'] = function () {
return new \Slim\HttpCache\CacheProvider();
};
$container['response_cache'] = function () {
return new \AKlump\Slim\Middleware\FileCache('/path/to/cache/dir');
};
// Register this middleware.
$app->add(new \AKlump\Slim\Middleware\ContentCache($container['cache'], $container['response_cache'], 3600));
要求
- 响应体必须可以被转换为字符串。
贡献
如果您觉得这个项目很有用...请考虑 捐赠。
安装
-
此中间件替换了 HTTP 缓存,因此您不应添加该中间件,如那些说明中所示。 不要做以下操作:
$app->add(new \Slim\HttpCache\Cache('public', 86400));
-
但是,您需要注册该中间件的服务提供者,如上 快速开始 中所示。
高级使用
如何在缓存之前更改正文内容?
如果您想在写入缓存之前更改响应正文内容,请使用以下第四个参数回调,它添加了一个最后修改注释
$app->add(new \AKlump\Slim\Middleware\ContentCache(
$container['cache'],
$container['response_cache'],
3600,
function (\DateTime $modified, $html_body) use ($settings) {
return $html_body . sprintf("Last modified: %s', $modified->format('r'));
}
));
如何使用数据库进行内容缓存?
您可以编写自己的类来实现 \AKlump\Slim\Middleware\ContentCacheInterface
。