跳到主要内容
版本号:Next

缓存策略

Verdaccio默认将所有软件包缓存到/storage文件夹中,但您可以决定是否要采用不同的策略。使用插件,您可以使用云或任何类型的数据库。 但是您可以决定是否要采用不同的策略。 通过使用插件,您可以使用云或任何类型的数据库。

缓存场景

  • 持续集成(Ci)服务器(例如Bamboo, GitLab, Jenkins,等)上构建Node.js项目是一项可能每天多次进行的任务,因此服务器每次构建时都会从注册表下载大量的tarball文件。 通常情况下,CI工具会在每次构建后清除缓存,然后重新开始整个过程。 这样做会浪费带宽并减少外部流量。 您可以使用Verdaccio在内部网络中缓存tarball和元数据,从而提高构建时间。
  • 延迟和连接可用性:不是所有国家都享有高速连接。因此,在本地网络中缓存软件包非常方便。无论您是在旅行中还是拥有弱连接,漫游或处于具有强防火墙的国家,这都可能影响用户体验(例如:损坏tarball),因此在本地缓存软件包是非常有用的。 正因为如此,在本地网络中缓存软件包非常方便。 无论您是在旅行中还是拥有弱连接,漫游或处于具有强防火墙的国家,这都可能影响用户体验(例如:损坏tarball),因此在本地缓存软件包是非常有用的。
  • 离线模式,现在所有的Node包管理器都使用自己的内部缓存,但是不同的项目可能使用不同的工具,这意味着需要使用锁文件等。这些工具无法共享缓存,唯一的解决方案是集中式的,并依赖于代理注册表。Verdaccio缓存所有元数据,tarball是按需下载的,可以在所有项目之间共享它们。 这些工具无法共享缓存,唯一的解决方案是集中式的,并依赖于代理注册表。Verdaccio会缓存所有的元数据,并按需下载tarball,从而能够在所有项目之间共享它们。这样,无论使用哪个工具,您都可以从Verdaccio的缓存中获取所需的软件包,提高构建效率并减少对外部网络的依赖。
  • 避免任何远程仓库突然返回HTTP 404错误,导致以前可用的tarball无法使用,也就是所谓的(left-pad问题)。

更快的构建策略

我们正在寻找更多的策略,欢迎您分享您在这个领域的经验。

避免缓存压缩包

如果您的存储空间有限,您可能需要避免缓存tarballs,可以在每个uplink中启用cachefalse,这样只会缓存元数据文件。

uplinks:
npmjs:
url: https://registry.npmjs.org/
cache: false

延长缓存过期时间

默认情况下,Verdaccio在从远程仓库获取新信息之前,会等待2分钟来使缓存元数据失效。

uplinks:
npmjs:
url: https://registry.npmjs.org/
maxage: 30m

增加每个uplinkmaxage值将减少请求的频率。 如果您不经常更新依赖项,这可能是一种有效的策略。

使用内存代替硬盘

有时候缓存软件包并不是关键步骤,而是通过从不同的注册表路由软件包来实现更快的构建时间。 有两个插件可以完全使用内存避免在物理硬盘上写入。

  npm install -g verdaccio-auth-memory
npm install -g verdaccio-memory

配置案例如下:

auth:
auth-memory:
users:
foo:
name: test
password: test
store:
memory:
limit: 1000

请记住,一旦服务器重新启动,数据就会丢失,我们建议在您不需要持久化数据的情况下使用此设置。