mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
Prewarm card cache in pipeline
This commit is contained in:
parent
756a9d9607
commit
207e04ef08
3 changed files with 12 additions and 2 deletions
|
|
@ -334,7 +334,7 @@ class Conf {
|
||||||
/** Link preview cache settings. */
|
/** Link preview cache settings. */
|
||||||
get linkPreview(): { max: number; ttl: number } {
|
get linkPreview(): { max: number; ttl: number } {
|
||||||
return {
|
return {
|
||||||
max: Number(Deno.env.get('DITTO_CACHE_LINK_PREVIEW_MAX') || 1000),
|
max: Number(Deno.env.get('DITTO_CACHE_LINK_PREVIEW_MAX') || 3000),
|
||||||
ttl: Number(Deno.env.get('DITTO_CACHE_LINK_PREVIEW_TTL') || 12 * 60 * 60 * 1000),
|
ttl: Number(Deno.env.get('DITTO_CACHE_LINK_PREVIEW_TTL') || 12 * 60 * 60 * 1000),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,11 @@ import { getAmount } from '@/utils/bolt11.ts';
|
||||||
import { faviconCache } from '@/utils/favicon.ts';
|
import { faviconCache } from '@/utils/favicon.ts';
|
||||||
import { errorJson } from '@/utils/log.ts';
|
import { errorJson } from '@/utils/log.ts';
|
||||||
import { nip05Cache } from '@/utils/nip05.ts';
|
import { nip05Cache } from '@/utils/nip05.ts';
|
||||||
|
import { parseNoteContent, stripimeta } from '@/utils/note.ts';
|
||||||
import { purifyEvent } from '@/utils/purify.ts';
|
import { purifyEvent } from '@/utils/purify.ts';
|
||||||
import { updateStats } from '@/utils/stats.ts';
|
import { updateStats } from '@/utils/stats.ts';
|
||||||
import { getTagSet } from '@/utils/tags.ts';
|
import { getTagSet } from '@/utils/tags.ts';
|
||||||
|
import { unfurlCardCached } from '@/utils/unfurl.ts';
|
||||||
import { renderWebPushNotification } from '@/views/mastodon/push.ts';
|
import { renderWebPushNotification } from '@/views/mastodon/push.ts';
|
||||||
import { policyWorker } from '@/workers/policy.ts';
|
import { policyWorker } from '@/workers/policy.ts';
|
||||||
import { verifyEventWorker } from '@/workers/verify.ts';
|
import { verifyEventWorker } from '@/workers/verify.ts';
|
||||||
|
|
@ -122,6 +124,7 @@ async function handleEvent(event: DittoEvent, opts: PipelineOpts): Promise<void>
|
||||||
Promise.allSettled([
|
Promise.allSettled([
|
||||||
handleZaps(kysely, event),
|
handleZaps(kysely, event),
|
||||||
updateAuthorData(event, opts.signal),
|
updateAuthorData(event, opts.signal),
|
||||||
|
prewarmLinkPreview(event, opts.signal),
|
||||||
generateSetEvents(event),
|
generateSetEvents(event),
|
||||||
])
|
])
|
||||||
.then(() =>
|
.then(() =>
|
||||||
|
|
@ -268,6 +271,13 @@ async function updateAuthorData(event: NostrEvent, signal: AbortSignal): Promise
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function prewarmLinkPreview(event: NostrEvent, signal: AbortSignal): Promise<void> {
|
||||||
|
const { firstUrl } = parseNoteContent(stripimeta(event.content, event.tags), []);
|
||||||
|
if (firstUrl) {
|
||||||
|
await unfurlCardCached(firstUrl, signal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Determine if the event is being received in a timely manner. */
|
/** Determine if the event is being received in a timely manner. */
|
||||||
function isFresh(event: NostrEvent): boolean {
|
function isFresh(event: NostrEvent): boolean {
|
||||||
return eventAge(event) < Time.minutes(1);
|
return eventAge(event) < Time.minutes(1);
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ async function renderStatus(event: DittoEvent, opts: RenderStatusOpts): Promise<
|
||||||
|
|
||||||
const [card, relatedEvents] = await Promise
|
const [card, relatedEvents] = await Promise
|
||||||
.all([
|
.all([
|
||||||
firstUrl ? unfurlCardCached(firstUrl) : null,
|
firstUrl ? unfurlCardCached(firstUrl, AbortSignal.timeout(500)) : null,
|
||||||
viewerPubkey
|
viewerPubkey
|
||||||
? await store.query([
|
? await store.query([
|
||||||
{ kinds: [6], '#e': [event.id], authors: [viewerPubkey], limit: 1 },
|
{ kinds: [6], '#e': [event.id], authors: [viewerPubkey], limit: 1 },
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue