commit 41cb63c
default
·
2025-01-09 18:21:06 +0000 UTC
parent 12fcc05
Added some actor object caching.
3 files changed,
+20,
-2
+15,
-1
1@@ -1194,10 +1194,20 @@ xs_dict *msg_actor(snac *snac)
2 xs *avtr = NULL;
3 xs *kid = NULL;
4 xs *f_bio = NULL;
5- xs_dict *msg = msg_base(snac, "Person", snac->actor, NULL, NULL, NULL);
6+ xs_dict *msg = NULL;
7 const char *p;
8 int n;
9
10+ /* everybody loves some caching */
11+ if (time(NULL) - object_mtime(snac->actor) < 6 * 3600 &&
12+ valid_status(object_get(snac->actor, &msg))) {
13+ snac_debug(snac, 1, xs_fmt("Returning cached actor %s", snac->actor));
14+
15+ return msg;
16+ }
17+
18+ msg = msg_base(snac, "Person", snac->actor, NULL, NULL, NULL);
19+
20 /* change the @context (is this really necessary?) */
21 ctxt = xs_list_append(ctxt, "https:/" "/www.w3.org/ns/activitystreams");
22 ctxt = xs_list_append(ctxt, "https:/" "/w3id.org/security/v1");
23@@ -1330,6 +1340,10 @@ xs_dict *msg_actor(snac *snac)
24 msg = xs_dict_set(msg, "manuallyApprovesFollowers",
25 xs_stock(xs_is_true(manually) ? XSTYPE_TRUE : XSTYPE_FALSE));
26
27+ /* cache it */
28+ snac_debug(snac, 1, xs_fmt("Caching actor %s", snac->actor));
29+ object_add_ow(snac->actor, msg);
30+
31 return msg;
32 }
33
M
data.c
+4,
-0
1@@ -336,6 +336,10 @@ int user_persist(snac *snac, int publish)
2
3 if (!nw)
4 publish = 0;
5+ else {
6+ /* uncache the actor object */
7+ object_del(snac->actor);
8+ }
9 }
10 }
11 }
M
snac.h
+1,
-1
1@@ -1,7 +1,7 @@
2 /* snac - A simple, minimalistic ActivityPub instance */
3 /* copyright (c) 2022 - 2025 grunfink et al. / MIT license */
4
5-#define VERSION "2.68"
6+#define VERSION "2.69-dev"
7
8 #define USER_AGENT "snac/" VERSION
9