Raycast 中文文档
  • 介绍
  • 链接
    • 官网
    • 官网 API 文档
    • 社区
    • GitHub
    • Store
    • Icon 生成器
    • 扩展图标模板
  • 基础
    • 起步
    • 创建您的第一个扩展
    • 贡献一个扩展
    • 过审一个扩展
    • 发布一个扩展
    • 调试一个扩展
    • 安装一个扩展
  • 团队
    • 开始
    • 发布私人扩展
    • 协作开发私有扩展
  • 例子
    • Doppler 共享 Secrets
    • Hacker News
    • Todo 列表
    • Spotify Controls
  • 资料
    • 最佳实践
    • 工具
      • CLI
      • ESLint
      • VS Code(社区工具)
    • 文件结构
    • 生命周期
      • 参数
      • 后台刷新
      • Deeplinks
    • Manifest
    • 安全性
    • 术语
    • 版本控制
  • API 参考
    • AI
    • Cache
    • Command
    • Clipboard
    • Environment
    • Feedback
      • Alert
      • HUD
      • Toast
    • Keyboard
    • Menu Bar Commands
    • OAuth
    • Preferences
    • Storage
    • System Utilities
    • 用户界面
      • Action Panel
      • Actions
      • Detail
      • Form
      • List
      • Grid
      • Colors
      • Icons & Images
      • Navigation
    • 窗口 & 搜索栏
  • 公共包
    • 起步
    • 功能
      • 执行 AppleScript
    • 图标
      • getAvatarIcon
      • getFavicon
      • getProgressIcon
    • React hooks
      • useCachedState
      • usePromise
      • useCachedPromise
      • useFetch
      • useForm
      • useExec
      • useSQL
      • useAI
  • 迁移
  • FAQ
由 GitBook 提供支持
在本页
  • API 参考
  • Cache
  • Cache#get
  • Cache#has
  • Cache#set
  • Cache#remove
  • Cache#clear
  • Cache#subscribe
  • 类型
  • Cache.Options
  • Cache.Subscriber
  • Cache.Subscription
  1. API 参考

Cache

上一页AI下一页Command

最后更新于1年前

缓存抽象,将数据存储在磁盘上并支持 LRU(最近最少使用)访问。由于扩展只能消耗最大数量。堆内存大小,缓存仅在内存中维护轻量级索引,并将实际数据存储在扩展支持目录中磁盘上的单独文件中。

API 参考

Cache

Cache 类提供 CRUD 样式的方法(get、set、remove)来基于键同步更新和检索数据。数据必须是字符串,由客户端决定使用哪种序列化格式。典型的用例是使用 JSON.stringify 和 JSON.parse。

默认情况下,缓存在扩展的命令之间共享。如果需要,请使用 为每个命令配置命名空间(例如,将其设置为 )。

签名

constructor(options: Cache.Options): Cache

例子

import { List, Cache } from "@raycast/api";

type Item = { id: string; title: string };
const cache = new Cache();
cache.set("items", JSON.stringify([{ id: "1", title: "Item 1" }]));

export default function Command() {
  const cached = cache.get("items");
  const items: Item[] = cached ? JSON.parse(cached) : [];

  return (
    <List>
      {items.map((item) => (
        <List.Item key={item.id} title={item.title} />
      ))}
    </List>
  );
}

属性

名称
描述
类型

isEmpty*

缓存是空就返回 true ,否则为 false

boolean

方法

方法

Cache#get

签名

get(key: string): string | undefined

参数

名称
描述
类型

key*

缓存条目的 key。

string

Cache#has

如果键的数据存在则返回 true,否则返回 false。您可以使用此方法来检查条目,而不会影响 LRU 访问。

签名

has(key: string): boolean

参数

名称
描述
类型

key*

缓存条目的 key。

string

Cache#set

签名

set(key: string, data: string)

参数

名称
描述
Type

key*

缓存条目的 key。

string

data*

缓存条目的字符串化数据。

string

Cache#remove

签名

remove(key: string): boolean

Cache#clear

签名

clear((options = { notifySubscribers: true }));

参数

名称
描述
类型

options

具有 notifySubscribers 属性的选项。默认为 true;设置为 false 会禁用订阅者通知。

object

Cache#subscribe

注册一个新订阅者,当缓存数据被设置或删除时,该订阅者会收到通知。返回一个可以调用以删除订阅者的函数。

签名

subscribe(subscriber: Cache.Subscriber): Cache.Subscription

参数

名称
描述
类型

subscriber

更新 Cache 时调用的函数。该函数接收两个值:清除 Cache 时更新或未定义的 Cache 条目的 key,以及关联的 data。

类型

Cache.Options

用于创建新缓存的选项。

属性

名称
描述
类型

capacity

容量(以字节为单位)。如果存储的数据超出容量,则删除最近最少使用的数据。默认容量为 10 MB。

number

namespace

如果设置,缓存将通过子目录命名。这对于分离扩展的各个命令的缓存很有用。默认情况下,缓存在扩展的命令之间共享。

string

Cache.Subscriber

订阅参数的函数。

type Subscriber = (key: string | undefined, data: string | undefined) => void;

Cache.Subscription

订阅返回的函数。

type Subscription = () => void;

返回给定键的数据。如果该键没有数据,则返回 undefined。如果您只想检查密钥是否存在,请使用 。

设置给定 key 的数据。如果数据超出配置的容量,则最近最少使用的条目将被删除。这也会通知注册订阅者(请参考 )。

删除给定键的数据。这也会通知注册订阅者(请参考 )。如果删除了键的数据,则返回 true,否则返回 false。

清除所有存储的数据。这也会通知注册订阅者(请参考 ),除非 notifySubscribers 选项设置为 false。

environment.commandName
Cache.Options
has
subscribe
subscribe
subscribe
get(key: string): string | undefined
has(key: string): boolean
set(key: string, data: string): void
remove(key: string): boolean
clear(options = { notifySubscribers: true }): void
subscribe(subscriber: Cache.Subscriber): Cache.Subscription
Cache.Subscriber