From 3f2bc0b0dad1eca6ee8a18a6c67281d3428c2ea8 Mon Sep 17 00:00:00 2001 From: ghost Date: Thu, 1 Feb 2024 19:39:12 +0200 Subject: [PATCH] add memory cache for compiled pages --- composer.json | 3 ++- example/config.json | 10 ++++++++++ src/server.php | 36 ++++++++++++++++++++++++++++++++---- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 014f9e5..260b647 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,8 @@ "type": "project", "require": { "yggverse/titan-ii": "^1.0", - "yggverse/gemini": "dev-main" + "yggverse/gemini": "dev-main", + "yggverse/cache": "^0.4.0" }, "license": "MIT", "autoload": { diff --git a/example/config.json b/example/config.json index 8ddaabc..acb1f77 100644 --- a/example/config.json +++ b/example/config.json @@ -7,6 +7,16 @@ "port":1965 } }, + "memcached": + { + "server": + { + "host":"127.0.0.1", + "port":11211, + "timeout":3600, + "namespace":"" + } + }, "dokuwiki": { "uri": diff --git a/src/server.php b/src/server.php index 2aed2d2..b7756cb 100644 --- a/src/server.php +++ b/src/server.php @@ -60,6 +60,14 @@ $config = json_decode( ) ); +// Init memory +$memory = new \Yggverse\Cache\Memory( + $config->memcached->server->host, + $config->memcached->server->port, + $config->memcached->server->namespace, + $config->memcached->server->timeout +); + // Init filesystem $filesystem = new \Yggverse\Gemini\Dokuwiki\Filesystem( sprintf( @@ -82,6 +90,7 @@ $server->setHandler( function (\Yggverse\TitanII\Request $request): \Yggverse\TitanII\Response { global $config; + global $memory; global $filesystem; $response = new \Yggverse\TitanII\Response(); @@ -125,6 +134,16 @@ $server->setHandler( { if ($path = $filesystem->getPagePathByUri($matches[1])) { + // Check for cached results + if ($content = $memory->get($path)) + { + $response->setContent( + $content + ); + + return $response; + } + // Init reader $reader = new \Yggverse\Gemini\Dokuwiki\Reader(); @@ -192,12 +211,21 @@ $server->setHandler( // Append about info $lines[] = $config->string->about; + // Merge lines + $content = implode( + PHP_EOL, + $lines + ); + + // Cache results + $memory->set( + $path, + $content + ); + // Response $response->setContent( - implode( - PHP_EOL, - $lines - ) + $content ); return $response;