@ chunkd/ 中间软件
为所有获取逻辑提供高级特性的源的中间软件层
缓存
缓存 请求的缓存响应, 并带有 LRU 缓存
import { SourceCache } from '@chunkd/middleware';
import { Source } from '@chunkd/source';
import { SourceHttp } from '@chunk/http';
/** Create a cache with 1MB of storage */
const cache = new SourceCache({ size: 1024 * 1024 * 1024 });
sources.use(cache);
const sourceHttp = sources.wrap(new SourceHttp('https://example.com/cog.tiff'));
// Cache Miss
sourceHttp.fetch(0, 1024);
// Cache hit
sourceHttp.fetch(0, 1024);
// Clear the cache
cache.clear();
// Cache Miss
sourceHttp.fetch(0, 1024);
绝对
绝对 将相接字节请求转换为绝对字节请求,以加强缓存
import { SourceCache } from '@chunkd/middleware';
import { Source } from '@chunkd/source';
import { SourceHttp } from '@chunk/http';
const abs = new SourceAbsolute();
sources.use(abs);
const sourceHttp = sources.wrap(new SourceHttp('https://example.com/cog.tiff'));
await sourceHttp.head(); // Ensure the file size is know
sourceHttp.fetch(-10); // Instead of a request for -10 bytes it will now request Bytes=[fileSize-10]-[fileSize]
块对齐取取取 (Chunking)
块 块对齐读取并大大提高缓存效率
// read files in 32KB chunks
const chunk = new SourceChunk({ size: 32 * 1024 });
const cache = new SourceCache({ size: 1024 * 1024 * 1024 });
source.use(chunk);
source.use(cache);
const sourceHttp = sources.wrap(new SourceHttp('https://example.com/cog.tiff'));
// Cache Miss, will fetch the first 32KB of the file
sourceHttp.fetch(0, 1024);
// Cache hit
sourceHttp.fetch(0, 1024);
// Cache hit
sourceHttp.fetch(1024, 1024);
// Cache hit
sourceHttp.fetch(2048, 1024);