[mod] caching

This commit is contained in:
fenris 2025-09-25 16:41:17 +02:00
parent 834953b635
commit c96a0aef4a
3 changed files with 44 additions and 34 deletions

View file

@ -3,6 +3,16 @@ namespace _zeitbild
/**
*/
export var cache : lib_plankton.cache.type_cache<any>;
export var cache_regular : lib_plankton.cache.type_subject<any>;
/**
*/
export var cache_external_resources : lib_plankton.cache.type_subject<any>;
/**
*/
export var cache_templates : lib_plankton.cache.type_subject<string>;
}

View file

@ -60,37 +60,29 @@ namespace _zeitbild.helpers
/**
*/
var _template_cache : Record<string, string> = {};
/**
* @todo caching
*/
export async function template_coin(
name : string,
data : Record<string, string>
) : Promise<string>
{
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<string>(
_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<string>(x.toString())
)
)
);
return Promise.resolve<string>(
lib_plankton.string.coin(
content,

View file

@ -258,7 +258,10 @@ async function main(
"name": "help",
}),
});
const args : Record<string, any> = arg_handler.read(lib_plankton.args.enum_environment.cli, args_raw.join(" "));
const args : Record<string, any> = 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<any>(
lib_plankton.cache.chest.make<any>(
{
"chest": lib_plankton.storage.memory.implementation_chest<any>({}),
}
)
);
await _zeitbild.cache.init();
{
_zeitbild.cache_regular = lib_plankton.cache.make<any>();
await lib_plankton.cache.init(_zeitbild.cache_regular);
}
{
_zeitbild.cache_external_resources = lib_plankton.cache.make<any>();
await lib_plankton.cache.init(_zeitbild.cache_external_resources);
}
{
_zeitbild.cache_templates = lib_plankton.cache.make<any>();
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);