Пропустить до главного контента
Версия: 5.x (Latest)

Стратегии кэширования

Verdaccio кэширует все пакеты по умолчанию в папку /storage. Но если вы хотите, вы можете перейти на другие стратегии. С помощью плагинов вы можете использовать облако или любую базу данных.

Сценарии кэширования

  • Build a Node.js project on Continuous Integration (Bamboo, GitLab, Jenkins, etc) servers is a task that might take several times at a day, thus, the server will download tons of tarballs from the registry every time takes place. Ведь обычно CI-инструменты очищают кэш после каждой сборки, и процесс загрузки каждый раз начинается заново. Это напрасная нагрузка на сеть и напрасная трата трафика. Вы можете использовать Verdaccio для кэширования tar-файлов и метаданных в своей внутренней сети и этим ускорить сборку.
  • Задержка и Доступность, не во всех странах есть высокоскоростное соединение. По этой причине, иметь кэшированные в вашей сети пакеты - очень удобно. Или вы путешествуете, или у вас слабое соединение, или роуминг, или вы находитесь в стране с сильным фаерволом, который может повлиять на пользовательский опыт (в смысле: повредить tar-файлы).
  • Офлайновый режим, все менеджеры пакетов в наши дни имеют свой внутренний кэш, но обычно у каждого проекта свой инструментарий, своя система блокировки файлов и т.д. Это делает невозможным использование общего кэша, и требуется централизованное решение, например, проксирующий репозиторий Verdaccio, который кэширует метаданные и tar-файлы, загруженные по требованию пользователя, и позволяет совместно их использовать. Those tools are unable to share cache, the unique solution is centralized and relies on a proxy registry, Verdaccio cache all metadata and tarballs are downloaded by demand being able to share them across all your project.
  • Позволяет избегнуть ситуации, когда удаленный репозиторий пакетов возвращает ошибку HTTP 404 для tar-файлов, которые были доступны совсем недавно (a.k.a случай с left-pad).

Стратегии для ускорения сборки

Мы ищем новые стратегии, не стесняйтесь делиться опытом на этом поле.

Отключение кэширования tar-файлов

Если у вас не так много места, вам может понадобится отключение кэширования tar-файлов, установите cache в значение false для каждого аплинка, и только метаданные будут кэшироваться.

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

Extending Cache Expiration Time

По умолчанию, время жизни метаданных в кэше Verdaccio составляет 2 минуты, после чего метаданные будут снова запрошены из удаленного репозитория.

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

Если увеличить значение maxage для каждого аплинка, удаленный репозиторий будет опрашиваться реже. Это может стать отличной стратегией, если ваши зависимости обновляются не слишком часто.

Использование памяти вместо диска

Иногда закэшировать пакеты не так важно, а важно получить их из разных репозиториев и ускорить сборку. Есть два плагина, которые позволяют избежать записи пакетов на диск, и хранить их в памяти.

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

Конфиграция выглядит примерно так

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

Помните, что когда сервер будет перезапущен, все данные будут потеряны, поэтому мы рекомендуем этот вариант в случаях, когда вам вообще не нужно хранить пакеты.