add perfomance chapters
This commit is contained in:
parent
55fc107eb8
commit
69381b9fcb
101 changed files with 8014 additions and 62 deletions
38
implementation/18-caching/src/Middleware/Cache.php
Normal file
38
implementation/18-caching/src/Middleware/Cache.php
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Lubian\NoFramework\Middleware;
|
||||
|
||||
use Laminas\Diactoros\Response\Serializer;
|
||||
use Lubian\NoFramework\Service\Cache\EasyCache;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Http\Server\MiddlewareInterface;
|
||||
use Psr\Http\Server\RequestHandlerInterface;
|
||||
|
||||
use function assert;
|
||||
use function base64_encode;
|
||||
use function is_string;
|
||||
|
||||
final class Cache implements MiddlewareInterface
|
||||
{
|
||||
public function __construct(
|
||||
private readonly EasyCache $cache,
|
||||
private readonly Serializer $serializer,
|
||||
) {
|
||||
}
|
||||
|
||||
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
||||
{
|
||||
if ($request->getMethod() !== 'GET') {
|
||||
return $handler->handle($request);
|
||||
}
|
||||
$keyHash = base64_encode($request->getUri()->getPath());
|
||||
$result = $this->cache->get(
|
||||
$keyHash,
|
||||
fn () => $this->serializer::toString($handler->handle($request)),
|
||||
300
|
||||
);
|
||||
assert(is_string($result));
|
||||
return $this->serializer::fromString($result);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue