Cacheable - แพ็กเกจแคชสำหรับ Node.js ที่ใช้ Keyv
(github.com/jaredwray)แพ็กเกจโซลูชันแคชที่สามารถใช้งานได้ในหลากหลายโปรเจกต์
- cacheable : เฟรมเวิร์กแคชยุคถัดไป ออกแบบและสร้างโดยคำนึงถึงการแคชแบบเลเยอร์ 1 / เลเยอร์ 2 ตั้งแต่ต้น เด่นด้านการแคชแบบกระจายและการขยายระบบ
- cache-manager : ใช้งานในบริการอย่าง NestJS และมีความสามารถทรงพลัง เช่น wrap ถูกใช้อย่างแพร่หลายในแอปพลิเคชันหลากหลายประเภท
- cacheable-request : เพิ่มความสามารถด้านแคชให้กับคำขอ HTTP แบบเนทีฟ รองรับแคชตาม RFC ทำให้ใช้แคชกับคำขอเครือข่ายได้ง่าย
- flat-cache : แคชในหน่วยความจำที่รวดเร็วพร้อมความคงทนของที่เก็บแบบไฟล์ เข้าถึงข้อมูลในหน่วยความจำได้อย่างรวดเร็วและยังบันทึกข้อมูลแคชลงไฟล์ได้
- file-entry-cache : แคชน้ำหนักเบาสำหรับเมตาดาต้าของไฟล์ เหมาะกับกระบวนการที่จัดการชุดไฟล์เฉพาะ โดยประมวลผลซ้ำเฉพาะไฟล์ที่เปลี่ยนแปลงหลังการรันครั้งล่าสุด
- @cacheable/node-cache : แพ็กเกจทดแทน node-cache
Cacheable
- เอนจินแคชประสิทธิภาพสูงแบบเลเยอร์ 1 / เลเยอร์ 2 ที่เน้นการแคชแบบกระจาย
- มีแผนรองรับฟีเจอร์ระดับองค์กร เช่น CacheSync
- มอบประสิทธิภาพที่แข็งแกร่งโดยอิงจากเอนจินจัดเก็บของ Keyv
- แคชและเรียกค้นข้อมูลได้ด้วย API ที่เรียบง่าย
- คุณสมบัติเด่น
- มี API ที่เรียบง่ายและเข้าใจได้ทันที
- โครงสร้างน้ำหนักเบาโดยไม่มีโมดูลที่ไม่จำเป็น
- ใช้เอนจินจัดเก็บที่เชื่อถือได้และขยายระบบได้ของ Keyv
- รองรับ Memory Caching ที่มี LRU (Least Recently Used) และแคชแบบหมดอายุ
- โครงสร้างที่ทนทานต่อความขัดข้องด้วยการกู้คืนข้อผิดพลาดและรองรับออฟไลน์
- รองรับ Wrap / Memoization สำหรับฟังก์ชันแบบ synchronous และ asynchronous
- รองรับ Hooks และการจัดการอีเวนต์เพื่อขยายความสามารถ
- ตั้งค่า TTL (ระยะเวลาหมดอายุ) ได้ง่ายในหน่วยมิลลิวินาที (1 นาที = 60000ms, 1 ชั่วโมง = 3600000ms, 1 วัน = 86400000ms)
- รองรับการทำงานแคชเลเยอร์ 2 แบบ non-blocking
- การซิงก์แคชแบบกระจายบนพื้นฐาน Pub/Sub (จะเปิดตัวเร็ว ๆ นี้)
- มีการทดสอบอย่างครอบคลุมและมี code coverage
- รองรับ ESM และ CommonJS และใช้งานร่วมกับ Typescript ได้
1 ความคิดเห็น
ก็ดูเหมือนว่าแค่แบ่งเลเยอร์เป็น primary กับ secondary ภายในแพ็กเกจ แล้วเก็บลงใน Keyv
ถ้าใครคาดหวังการแคชแบบเลเยอร์ 1 / เลเยอร์ 2 ในความหมายดั้งเดิม กดกลับได้เลยครับ