aklump/slim-response-cache

Slim 中间件,用于缓存后续请求的响应。

0.2.1 2019-05-16 18:55 UTC

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));

要求

  1. 响应体必须可以被转换为字符串。

贡献

如果您觉得这个项目很有用...请考虑 捐赠

安装

  1. 此中间件替换了 HTTP 缓存,因此您不应添加该中间件,如那些说明中所示。 不要做以下操作:

     $app->add(new \Slim\HttpCache\Cache('public', 86400));
    
  2. 但是,您需要注册该中间件的服务提供者,如上 快速开始 中所示。

高级使用

如何在缓存之前更改正文内容?

如果您想在写入缓存之前更改响应正文内容,请使用以下第四个参数回调,它添加了一个最后修改注释

$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