Files
directus/api/src/utils/compress.ts
José Varela cc343fdf91 Improve cache performance by compressing records (#14833)
* Utils to compress/decompress data
Gzip was chosen because we want smaller data but quick algorithm since this will be ran for every request

* Compress system cache

* Decompress system cache

* Set/Get compressed cache for individual requests

* Switch from gzip to snappy, use json compression too

* Fix cache exp set/get

* Remove unused import

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-08-04 17:35:27 -04:00

13 lines
559 B
TypeScript

import { compress as compressSnappy, uncompress as uncompressSnappy } from 'snappy';
import { compress as compressJSON, decompress as decompressJSON } from '@directus/shared/utils';
export async function compress(raw: Record<string, any> | Record<string, any>[]): Promise<Buffer> {
if (!raw) return raw;
return await compressSnappy(compressJSON(raw));
}
export async function decompress(compressed: Buffer): Promise<any> {
if (!compressed) return compressed;
return decompressJSON((await uncompressSnappy(compressed, { asBuffer: false })) as string);
}