From c96a0aef4a26084f79771124022ffc619845ea7d Mon Sep 17 00:00:00 2001 From: Fenris Wolf Date: Thu, 25 Sep 2025 16:41:17 +0200 Subject: [PATCH] [mod] caching --- source/base.ts | 12 +++++++++++- source/helpers.ts | 40 ++++++++++++++++------------------------ source/main.ts | 26 +++++++++++++++++--------- 3 files changed, 44 insertions(+), 34 deletions(-) diff --git a/source/base.ts b/source/base.ts index 4aa10be..8a9f23c 100644 --- a/source/base.ts +++ b/source/base.ts @@ -3,6 +3,16 @@ namespace _zeitbild /** */ - export var cache : lib_plankton.cache.type_cache; + export var cache_regular : lib_plankton.cache.type_subject; + + + /** + */ + export var cache_external_resources : lib_plankton.cache.type_subject; + + + /** + */ + export var cache_templates : lib_plankton.cache.type_subject; } diff --git a/source/helpers.ts b/source/helpers.ts index d5b929d..97dc5fa 100644 --- a/source/helpers.ts +++ b/source/helpers.ts @@ -60,37 +60,29 @@ namespace _zeitbild.helpers /** */ - var _template_cache : Record = {}; - - - /** - * @todo caching - */ export async function template_coin( name : string, data : Record ) : Promise { - let content : string; - if (! (name in _template_cache)) { - content = ( - ( - await lib_plankton.file.read( - lib_plankton.string.coin( - "templates/{{name}}.html.tpl", - { - "name": name, - } - ) + const content : string = await lib_plankton.cache.get( + _zeitbild.cache_templates, + name, + null, + () => ( + lib_plankton.file.read( + lib_plankton.string.coin( + "templates/{{name}}.html.tpl", + { + "name": name, + } ) ) - .toString() - ); - _template_cache[name] = content; - } - else { - content = _template_cache[name]; - } + .then( + x => Promise.resolve(x.toString()) + ) + ) + ); return Promise.resolve( lib_plankton.string.coin( content, diff --git a/source/main.ts b/source/main.ts index 85464ed..0cf97b0 100644 --- a/source/main.ts +++ b/source/main.ts @@ -258,7 +258,10 @@ async function main( "name": "help", }), }); - const args : Record = arg_handler.read(lib_plankton.args.enum_environment.cli, args_raw.join(" ")); + const args : Record = arg_handler.read( + lib_plankton.args.enum_environment.cli, + args_raw.join(" ") + ); // init2 await _zeitbild.conf.init( @@ -313,17 +316,21 @@ async function main( break; } } - ) - ) - ); - _zeitbild.cache = lib_plankton.cache.chest.implementation( - lib_plankton.cache.chest.make( - { - "chest": lib_plankton.storage.memory.implementation_chest({}), } ) ); - await _zeitbild.cache.init(); + { + _zeitbild.cache_regular = lib_plankton.cache.make(); + await lib_plankton.cache.init(_zeitbild.cache_regular); + } + { + _zeitbild.cache_external_resources = lib_plankton.cache.make(); + await lib_plankton.cache.init(_zeitbild.cache_external_resources); + } + { + _zeitbild.cache_templates = lib_plankton.cache.make(); + await lib_plankton.cache.init(_zeitbild.cache_templates); + } // exec if (args["help"]) { @@ -443,6 +450,7 @@ async function main( "checklevel_restriction": lib_plankton.api.enum_checklevel.hard, // "checklevel_input": lib_plankton.api.enum_checklevel.soft, // "checklevel_output": lib_plankton.api.enum_checklevel.soft, + "set_content_length": false, } ); const output : string = lib_plankton.http.encode_response(http_response);