+15
-17
README.md
+15
-17
README.md
···
31
31
compression: true,
32
32
})
33
33
34
-
// write cascades down
35
-
await storage.set('user:123', { name: 'Alice' })
34
+
// critical file: keep in memory for instant serving
35
+
await storage.set('site:abc/index.html', indexHtml)
36
36
37
-
// read bubbles up
38
-
const user = await storage.get('user:123')
37
+
// big files: skip hot, let them live in warm + cold
38
+
await storage.set('site:abc/video.mp4', videoData, { skipTiers: ['hot'] })
39
+
await storage.set('site:abc/hero.png', imageData, { skipTiers: ['hot'] })
39
40
40
-
// see where it came from
41
-
const result = await storage.getWithMetadata('user:123')
42
-
console.log(result.source) // 'hot', 'warm', or 'cold'
41
+
// on read, bubbles up from wherever it lives
42
+
const result = await storage.getWithMetadata('site:abc/index.html')
43
+
console.log(result.source) // 'hot' - served from memory
43
44
44
-
// nuke by prefix
45
-
await storage.invalidate('user:')
45
+
const video = await storage.getWithMetadata('site:abc/video.mp4')
46
+
console.log(video.source) // 'warm' - served from disk, never touches memory
47
+
48
+
// nuke entire site
49
+
await storage.invalidate('site:abc/')
46
50
```
51
+
52
+
Hot tier stays small and fast. Warm tier has everything. Cold tier is the source of truth.
47
53
48
54
## How it works
49
55
···
163
169
getStats(): Promise<TierStats>
164
170
clear(): Promise<void>
165
171
}
166
-
```
167
-
168
-
## Skipping tiers
169
-
170
-
Don't want big videos in memory? Skip hot:
171
-
172
-
```typescript
173
-
await storage.set('video.mp4', data, { skipTiers: ['hot'] })
174
172
```
175
173
176
174
## Running the demo