Skip to content

Commit c66dadb

Browse files
committed
feat: add cache for link preview
1 parent 47c34ca commit c66dadb

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

packages/backend/server/src/plugins/worker/controller.ts

+14-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
import type { Request, Response } from 'express';
1111
import { HTMLRewriter } from 'htmlrewriter';
1212

13-
import { BadRequest, Config, URLHelper } from '../../fundamentals';
13+
import { BadRequest, Cache, Config, URLHelper } from '../../fundamentals';
1414
import type { LinkPreviewRequest, LinkPreviewResponse } from './types';
1515
import {
1616
appendUrl,
@@ -31,6 +31,7 @@ export class WorkerController {
3131

3232
constructor(
3333
config: Config,
34+
private readonly cache: Cache,
3435
private readonly url: URLHelper
3536
) {
3637
this.allowedOrigin = [
@@ -138,6 +139,17 @@ export class WorkerController {
138139
this.logger.debug('Processing request', { origin, url: targetURL });
139140

140141
try {
142+
const cachedResponse = await this.cache.get<string>(targetURL.toString());
143+
if (cachedResponse) {
144+
return resp
145+
.status(200)
146+
.header({
147+
'content-type': 'application/json;charset=UTF-8',
148+
...getCorsHeaders(origin),
149+
})
150+
.send(cachedResponse);
151+
}
152+
141153
const response = await fetch(targetURL, {
142154
headers: cloneHeader(request.headers),
143155
});
@@ -245,6 +257,7 @@ export class WorkerController {
245257
responseSize: json.length,
246258
});
247259

260+
await this.cache.set(targetURL.toString(), res);
248261
return resp
249262
.status(200)
250263
.header({

0 commit comments

Comments
 (0)