AustraliatheKashey/kashe
A memoization library based on weakmaps. 🤯 Sometimes cache is kashe
🔥 kashe: Memoization an toàn, mạnh mẽ cho mọi môi trường
kashe không chỉ là một thư viện memoization — nó là công cụ để dẫn xuất dữ liệu từ dữ liệu, với tư duy bền vững về WeakMap.
kashe là một thư viện dẫn xuất dữ liệu (data derivation) cho JavaScript và TypeScript, hoạt động dựa trên nguyên tắc memoization yếu (weak memoization). Khác với các thư viện memoization thông thường, kashe lưu trữ kết quả bên trong chính đối số đầu vào thông qua WeakMap, giúp tránh rò rỉ bộ nhớ và hỗ trợ cách ly cache cho từng yêu cầu. Phát triển bởi theKashey, kashe được thiết kế để giải quyết các thách thức phổ biến như rò rỉ bộ nhớ, an toàn giữa các request, và tính dự đoán trong kiểm thử.
✨ Điểm nổi bật
- An toàn bộ nhớ: Sử dụng WeakMap để lưu trữ dữ liệu, tránh rò rỉ bộ nhớ khi đối tượng bị thu gom.
- Cách ly cache theo request: Hỗ trợ cắt cache bằng tùy chọn
resolver, phù hợp cho môi trường SSR. - Kiểm soát nâng cao: Hỗ trợ TTL, giới hạn LRU, và cấu hình serializer.
- Đa môi trường: Hoạt động trên trình duyệt, Node.js, SSR và môi trường test.
- Hiện đại: Viết bằng TypeScript với hỗ trợ đầy đủ ESM và CJS.
- Tích hợp dễ dàng: Cú pháp tương tự React.cache, dễ áp dụng ngay.
💡 Vì sao đáng chú ý
kashe không phải là sự thay thế trực tiếp cho mọi thư viện memoization. Thay vào đó, nó đặt ra những nguyên tắc thiết kế rõ rệt: an toàn bộ nhớ trước tiện lợi, và vòng đời cache gắn liền với đối tượng đầu vào. Nhờ WeakMap, kashe tự động dọn dẹp cache khi đối tượng không còn tham chiếu, hoàn hảo cho các ứng dụng SSR, môi trường đồng thời, hoặc hệ thống đa khách hàng.
#Memoization #WeakMap #JavaScript #TypeScript #TiniX
Similar Projects
Discover other similar projects and AI models.
Enhance Reselect selectors with deeper memoization and cache management.
Lazy infinite compact streams with cache-friendly O(1) indexing and applications for memoization
React Starter Project with Webpack 4, Babel 7, TypeScript, CSS Modules, Server Side Rendering, i18n and some more niceties
A blazing fast memoization library that is tiny but feature-rich.
⚛️ React hook for memoizing values inline anywhere in a component