logologo
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
logologo
API Overview

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
แคช

@nocobase/cli

NocoBase CLI
ตัวแปรสภาพแวดล้อมส่วนกลาง

@nocobase/client

แอปพลิเคชัน
ปลั๊กอิน

@nocobase/database

คอลเลกชัน
ฟิลด์

interfaces

BaseInterface
ตัวดำเนินการ Filter

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
รีโพสิทอรี

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
แหล่งข้อมูล (abstract)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

ตัวจัดการแหล่งข้อมูล
โฟลว์บริบท
FlowEngine
FlowModel
ทรัพยากรเวิร์กโฟลว์

@nocobase/logger

Logger

@nocobase/server

AppCommand
แอปพลิเคชัน
AuditManager
บริบท
การไมเกรต
ปลั๊กอิน

@nocobase/sdk

Auth
สตอเรจ
Previous PageBaseAuth
Next Pageแคช
TIP

เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ

#CacheManager

#ภาพรวม

CacheManager สร้างขึ้นบนพื้นฐานของ node-cache-manager เพื่อจัดการโมดูล Cache ให้กับ NocoBase ครับ/ค่ะ ประเภท Cache ที่มีมาให้ในตัว ได้แก่

  • memory - lru-cache ที่ถูกจัดเตรียมมาให้โดยค่าเริ่มต้นจาก node-cache-manager
  • redis - รองรับการทำงานโดย node-cache-manager-redis-yet

สามารถลงทะเบียนและขยายประเภทเพิ่มเติมได้ผ่าน API ครับ/ค่ะ

#แนวคิดสำคัญ

  • Store: กำหนดวิธีการแคช ซึ่งประกอบด้วยเมธอด Factory สำหรับสร้างแคช และการตั้งค่าอื่นๆ ที่เกี่ยวข้อง วิธีการแคชแต่ละแบบจะมีตัวระบุเฉพาะ (Unique Identifier) ที่ต้องระบุตอนลงทะเบียนครับ/ค่ะ ตัวระบุเฉพาะสำหรับวิธีการแคชสองแบบที่มีมาให้ในตัวคือ memory และ redis ครับ/ค่ะ

  • เมธอด Factory ของ Store: เป็นเมธอดที่จัดเตรียมโดย node-cache-manager และแพ็กเกจส่วนขยายที่เกี่ยวข้อง เพื่อใช้สร้างแคชครับ/ค่ะ ตัวอย่างเช่น 'memory' ที่จัดเตรียมมาให้โดยค่าเริ่มต้นจาก node-cache-manager และ redisStore ที่จัดเตรียมโดย node-cache-manager-redis-yet เป็นต้น ซึ่งก็คือพารามิเตอร์แรกของเมธอด caching ใน node-cache-manager ครับ/ค่ะ

  • Cache: เป็นคลาสที่ NocoBase ห่อหุ้มไว้ ซึ่งมีเมธอดที่เกี่ยวข้องกับการใช้งานแคชครับ/ค่ะ เมื่อใช้งานแคชจริง ๆ จะเป็นการทำงานกับอินสแตนซ์ของ Cache อินสแตนซ์ของ Cache แต่ละตัวจะมีตัวระบุเฉพาะ ซึ่งสามารถใช้เป็น Namespace เพื่อแยกความแตกต่างของโมดูลต่างๆ ได้ครับ/ค่ะ

#เมธอดของคลาส

#constructor()

#Signature

  • constructor(options?: CacheManagerOptions)

#Types

export type CacheManagerOptions = Partial<{
  defaultStore: string;
  stores: {
    [storeType: string]: StoreOptions;
  };
}>;

type StoreOptions = {
  store?: 'memory' | FactoryStore<Store, any>;
  close?: (store: Store) => Promise<void>;
  // global config
  [key: string]: any;
};

#รายละเอียด

#CacheManagerOptions
คุณสมบัติประเภทคำอธิบาย
defaultStorestringตัวระบุเฉพาะสำหรับประเภท Cache เริ่มต้น
storesRecord<string, StoreOptions>ใช้ลงทะเบียนประเภท Cache โดย Key คือตัวระบุเฉพาะของประเภท Cache และ Value คือออบเจกต์ที่ประกอบด้วยเมธอดการลงทะเบียนและ Global Configuration สำหรับประเภท Cache นั้นๆ ครับ/ค่ะ
ใน node-cache-manager เมธอดสำหรับสร้างแคชคือ await caching(store, config) ส่วนออบเจกต์ที่จะต้องระบุในที่นี้คือ StoreOptions
#StoreOptions
คุณสมบัติประเภทคำอธิบาย
storememory | FactoryStore<Store, any>เมธอด Factory ของ Store ซึ่งตรงกับพารามิเตอร์แรกของ caching
close(store: Store) => Promise<void>ไม่บังคับครับ/ค่ะ หากเป็น Middleware ที่ต้องมีการสร้าง Connection เช่น Redis จำเป็นต้องระบุเมธอด Callback สำหรับปิด Connection โดยมีพารามิเตอร์เป็นออบเจกต์ที่เมธอด Factory ของ Store ส่งกลับมา
[key: string]anyGlobal Configuration อื่นๆ ของ Store ซึ่งตรงกับพารามิเตอร์ที่สองของ caching

#ค่า options เริ่มต้น

import { redisStore, RedisStore } from 'cache-manager-redis-yet';

const defaultOptions: CacheManagerOptions = {
  defaultStore: 'memory',
  stores: {
    memory: {
      store: 'memory',
      // global config
      max: 2000,
    },
    redis: {
      store: redisStore,
      close: async (redis: RedisStore) => {
        await redis.client.quit();
      },
    },
  },
};

พารามิเตอร์ options จะถูกรวมเข้ากับค่า options เริ่มต้นครับ/ค่ะ คุณสมบัติที่มีอยู่แล้วในค่า options เริ่มต้นสามารถละเว้นได้ ตัวอย่างเช่น:

const cacheManager = new CacheManager({
  stores: {
    defaultStore: 'redis',
    redis: {
      // redisStore มีให้ในค่า options เริ่มต้นอยู่แล้ว คุณจึงเพียงแค่ระบุการตั้งค่า redisStore เท่านั้นครับ/ค่ะ
      url: 'redis://localhost:6379',
    },
  },
});

#registerStore()

ใช้ลงทะเบียนวิธีการแคชแบบใหม่ครับ/ค่ะ ตัวอย่างเช่น:

import { redisStore } from 'cache-manager-redis-yet';

cacheManager.registerStore({
  // ตัวระบุเฉพาะของ Store
  name: 'redis',
  // เมธอด Factory สำหรับสร้าง Store
  store: redisStore,
  // ปิด Connection ของ Store
  close: async (redis: RedisStore) => {
    await redis.client.quit();
  },
  // Global Configuration
  url: 'xxx',
});

#Signature

  • registerStore(options: { name: string } & StoreOptions)

#createCache()

ใช้สร้างแคชครับ/ค่ะ ตัวอย่างเช่น:

await cacheManager.createCache({
  name: 'default', // ตัวระบุเฉพาะของ Cache
  store: 'memory', // ตัวระบุเฉพาะของ Store
  prefix: 'mycache', // จะเพิ่ม Prefix 'mycache:' ให้กับ Cache Key โดยอัตโนมัติ (ไม่บังคับ)
  // การตั้งค่า Store อื่นๆ (Custom Configuration) ซึ่งจะถูกรวมเข้ากับ Global Configuration ของ Store
  max: 2000,
});

#Signature

  • createCache(options: { name: string; prefix?: string; store?: string; [key: string]: any }): Promise<Cache>

#รายละเอียด

#options
คุณสมบัติประเภทคำอธิบาย
namestringตัวระบุเฉพาะของ Cache
storestringตัวระบุเฉพาะของ Store
prefixstringไม่บังคับ, Prefix สำหรับ Cache Key
[key: string]anyรายการ Custom Configuration อื่นๆ ที่เกี่ยวข้องกับ Store

หากละเว้น store จะใช้ defaultStore แทนครับ/ค่ะ ในกรณีนี้ วิธีการแคชจะเปลี่ยนแปลงไปตามวิธีการแคชเริ่มต้นของระบบครับ/ค่ะ

เมื่อไม่มี Custom Configuration จะส่งคืน Default Cache Space ที่สร้างขึ้นจาก Global Configuration และถูกแชร์โดยวิธีการแคชปัจจุบันครับ/ค่ะ แนะนำให้เพิ่ม prefix เพื่อหลีกเลี่ยง Key ที่ซ้ำกันครับ/ค่ะ

// ใช้ Cache เริ่มต้น โดยใช้ Global Configuration
await cacheManager.createCache({ name: 'default', prefix: 'mycache' });
#Cache

ดูเพิ่มเติมที่ Cache

#getCache()

ใช้สำหรับดึง Cache ที่เกี่ยวข้องครับ/ค่ะ

cacheManager.getCache('default');

#Signature

  • getCache(name: string): Cache

#flushAll()

ใช้สำหรับรีเซ็ต Cache ทั้งหมดครับ/ค่ะ

await cacheManager.flushAll();

#close()

ใช้สำหรับปิด Connection ของ Cache Middleware ทั้งหมดครับ/ค่ะ

await cacheManager.close();