Skip to content

Iconify API 配置

本教程是面向 Node.js 的 Iconify API 安装说明 的一部分。 本部分教程将解释 API 的配置选项。

有几种更改配置的方法:

  • 编辑 src/config/ 中的文件,然后重新构建脚本。某些高级选项(例如将 API 与自定义图标结合使用)需要此操作。
  • 使用环境变量,例如 PORT=3100 npm run start
  • 使用 .env 文件来存储环境变量。

如果您的 API 已经在运行,更改配置后必须重启 API。 配置无法在不中断服务的情况下重新加载。

环境变量选项

可以通过环境变量更改的选项及其默认值(您可以在 src/config/app.ts 中找到所有选项):

  • HOST=0.0.0.0:HTTP 服务器监听的 IP 地址或主机名。
  • PORT=3000:HTTP 服务器监听的端口。
  • REDIRECT_INDEX=https://iconify.design// 路由的重定向地址。API 不提供任何页面服务,因此索引页会重定向到主网站。
  • STATUS_REGION=:添加到 /version 路由响应中的自定义文本。Iconify API 运行在服务器网络上,访问者会被路由到最近的服务器。此选项用于告知用户连接到了哪台服务器。
  • CACHE_ROOT_DIR=cache:缓存目录,相对于应用目录,末尾不带 "/"。
  • ENABLE_VERSION=true:启用显示 API 版本和 STATUS_REGION 值的 /version 路由。如果您仅使用 API 提供图标数据,请禁用它。
  • ENABLE_ICON_LISTS=true:启用列出图标集的 /collections 路由,以及用于获取图标列表的 /collection?prefix=whatever 路由。供图标选择器使用。如果您仅使用 API 提供图标数据,请禁用它。
  • ENABLE_SEARCH_ENGINE=true:启用 /search 路由。需要 ENABLE_ICON_LISTS=true
  • ALLOW_FILTER_ICONS_BY_STYLE=true:允许基于填充(fill)或描边(stroke)搜索图标,例如在搜索查询中添加 style=fill。此功能会占用少量内存,因此可以禁用。需要 ENABLE_SEARCH_ENGINE=true

更新图标

服务器启动时会自动更新图标。

除此之外,API 还可以在不重启服务器的情况下更新图标集。

要启用自动更新,您必须设置 APP_UPDATE_SECRET 环境变量。没有它,更新将无法工作。

  • ALLOW_UPDATE=true:启用 /update 路由。
  • UPDATE_REQUIRED_PARAM=secret:密钥/值对中的键。不能为空。
  • APP_UPDATE_SECRET=:密钥/值对中的值。不能为空。
  • UPDATE_THROTTLE=60:运行更新前等待的秒数。

要触发图标集更新,请打开 /update?foo=bar,其中 fooUPDATE_REQUIRED_PARAM 的值,barAPP_UPDATE_SECRET 的值。

更新不会立即触发,它将在 UPDATE_THROTTLE 秒后运行。 这样做是为了防止当类似 GitHub hooks 的机制连续多次触发更新时进行重复检查。

如果在更新过程已经在运行时触发了更新 (即,已检查源是否有更新,但下载仍在进行中), 则会在当前运行的更新结束后再次运行更新检查。

无论结果如何,对 /update 路由的响应始终相同。 这样做是为了防止他人尝试猜测密钥/值对,甚至无法判断该路由是否已启用。 要查看实际结果,您需要检查控制台。 成功的请求和更新过程将被记录到日志中。

HTTP 标头

默认情况下,服务器会发送以下 HTTP 标头:

  • 各种 CORS 标头,允许从任何地方访问。
  • 缓存标头,用于将响应缓存 604800 秒(7 天)。

有关更多详细信息,请参阅 如何在 API 中更改 HTTP 标头

内存管理

API 不会将所有已加载的图标存储在内存中。 相反,它将图标集拆分为较小的块,将它们存储在缓存中,并在需要时从缓存加载这些块。 从缓存加载块后,它会在内存中保留一段时间。 这样,最常用的图标会保留在内存中,而很少使用的图标则不会占用内存。

有两个配置变量用于处理此问题:

  • src/config/app.ts 中的 splitIconSetConfig,用于管理将大型图标集拆分为较小的块。
  • src/config/app.ts 中的 storageConfig,用于管理缓存。

这些配置对象中的所有属性都可以通过环境变量进行更改。 将属性转换为下划线分隔的大写形式, 为 splitIconSetConfig 添加 "SPLIT_" 前缀,为 storageConfig 添加 "STORAGE_" 前缀。

您可能想要更改的配置值(作为环境变量):

  • STORAGE_CACHE_DIR={cache}/storage:存储缓存的目录,相对于应用目录,末尾不带 "/"。使用 "{cache}" 指向 CACHE_ROOT_DIR 变量中设置的根缓存目录。
  • STORAGE_MAX_COUNT=100:内存中存储项的最大数量。如果内存使用率过高,请减少该数值。设置为 0 可禁用。
  • STORAGE_TIMER=60000:用于检查过期项的计时器。

如果您希望始终将图标数据保留在内存中,请设置 SPLIT_CHUNK_SIZE=0STORAGE_MAX_COUNT=0。 如果您的 API 实例不需要提供数十万个图标,这将有助于使响应速度尽可能快。