feat: added redis
This commit is contained in:
@ -5,11 +5,10 @@ import {
|
||||
MagickGeometry,
|
||||
} from "https://deno.land/x/imagemagick_deno@0.0.14/mod.ts";
|
||||
import { parseMediaType } from "https://deno.land/std@0.175.0/media_types/parse_media_type.ts";
|
||||
import * as cache from "../../../../lib/cache.ts";
|
||||
|
||||
await initializeImageMagick();
|
||||
|
||||
const cache = new Map<string, Promise<Response>>();
|
||||
|
||||
async function getRemoteImage(image: string) {
|
||||
const sourceRes = await fetch(image);
|
||||
if (!sourceRes.ok) {
|
||||
@ -76,7 +75,6 @@ function parseParams(reqUrl: URL) {
|
||||
}
|
||||
|
||||
async function getImageResponse(
|
||||
imageUrl: string,
|
||||
remoteImage: { buffer: Uint8Array; mediaType: string },
|
||||
params: { width: number; height: number },
|
||||
): Promise<Response> {
|
||||
@ -110,8 +108,8 @@ export const handler = async (
|
||||
}
|
||||
|
||||
const imageId = `${imageUrl}.${params.width}.${params.height}`;
|
||||
if (cache.has(imageId)) {
|
||||
return (await cache.get(imageId)!).clone();
|
||||
if (await cache.has(imageId)) {
|
||||
return (await (await cache.get(imageId)!)).clone();
|
||||
}
|
||||
|
||||
const remoteImage = await getRemoteImage(imageUrl);
|
||||
@ -119,9 +117,9 @@ export const handler = async (
|
||||
return new Response(remoteImage, { status: 400 });
|
||||
}
|
||||
|
||||
const response = getImageResponse(imageUrl, remoteImage, params);
|
||||
const response = getImageResponse(remoteImage, params);
|
||||
|
||||
cache.set(imageId, response);
|
||||
await cache.set(imageId, response);
|
||||
|
||||
return response;
|
||||
};
|
||||
|
Reference in New Issue
Block a user