mes-engine
Version:
A powerful and flexible video processing framework for Node.js with support for multiple processing engines, adaptive streaming, and intelligent caching.
63 lines (45 loc) • 1.78 kB
Markdown
# Caching Strategies
Intelligent caching is built into `mes-engine` to reduce storage latency and improve streaming performance.
## Cache Options
The `CacheOptions` interface defines how the cache behaves:
```typescript
interface CacheOptions {
maxSize: number; // Maximum size of the cache in bytes
ttl: number; // Time To Live in seconds
preloadNextChunk: boolean; // Whether to automatically fetch the next chunk
}
```
## Supported Strategies
### `InternalCache`
A memory-based cache using a Least Recently Used (LRU) eviction policy. It is highly effective for hot content.
```typescript
import { InternalCache, FileSystemStorage } from 'mes-engine';
const storage = new FileSystemStorage();
const cache = new InternalCache({
maxSize: 1024 * 1024 * 500, // 500MB
ttl: 3600,
preloadNextChunk: true
}, storage);
```
## Key Features
### Next-Chunk Preloading
When `preloadNextChunk` is enabled, the `InternalCache` will automatically attempt to fetch the next sequential chunk (e.g., `chunk_1` if `chunk_0` was requested) and store it in memory. This significantly reduces buffer times for sequential playback.
## Custom Caching
You can implement your own strategy (e.g., using Redis) by extending the `CacheStrategy` class:
```typescript
import { CacheStrategy } from 'mes-engine';
class RedisCache extends CacheStrategy {
async set(key: string, value: Buffer): Promise<void> {
// Redis SETEX
}
async get(key: string): Promise<Buffer | null> {
// Redis GET
}
async preload(key: string): Promise<void> {
// Custom preloading logic
}
async clear(): Promise<void> {
// Redis FLUSHDB
}
}
```