Spaces:
Running
Running
File size: 847 Bytes
12d3f0e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import crypto from 'crypto';
import { MAX_CACHE_ITEMS } from '../config.js';
// High-speed in-memory cache of pre-rendered PDF buffers (SHA-256 key -> { buffer, createdAt }).
// Eviction is oldest-inserted-first once MAX_CACHE_ITEMS is reached.
const pdfRamCache = new Map();
export function generateContentHash(content, metadata) {
return crypto.createHash('sha256')
.update(content + JSON.stringify(metadata || {}))
.digest('hex');
}
export function getCachedPdf(key) {
return pdfRamCache.get(key);
}
export function cachePdf(key, buffer) {
if (pdfRamCache.size >= MAX_CACHE_ITEMS) {
const oldestKey = pdfRamCache.keys().next().value;
pdfRamCache.delete(oldestKey);
}
pdfRamCache.set(key, { buffer, createdAt: Date.now() });
}
export function cacheSize() {
return pdfRamCache.size;
}
|