Strategie di caching
Verdaccio di default memorizza nella cache tutti i pacchetti nella cartella /storage
. Tuttavia si può decidere di voler seguire una strategia differente. Utilizzando i plugin si potrebbe usare il cloud o qualsiasi tipo di database.
Scenari di caching
- Creare un progetto di Node.js sui server dell'Integrazione Continua (Bamboo, GitLab, Jenkins, etc.) è un'attività che potrebbe richiedere diverse volte al giorno, dunque, il server scaricherà molti archivi tar dal registro ogni volta che si verifica. Come al solito, i tool di CI puliscono la cache dopo ogni build e il processo ricomincia nuovamente ogni volta. Ciò è uno spreco di banda e riduce il traffico esterno. È possibile utilizzare Verdaccio per memorizzare nella cache tarball e metadati nella nostra rete interna e per dare un impulso in fase di build.
- Latenza e Connettività, non tutti i Paesi godono di una connessione ad alta velocità. Per questo motivo memorizzare i pacchetti nella cache localmente nella propria rete è decisamente comodo. Se si sta viaggiando o si ha una connessione debole, roaming o in paesi con Firewall resistenti che potrebbero incidere sull'esperienza dell'utente (es: corruzione di tarball).
- Modalità Offline, tutti i Node Package Manager oggigiorno utilizzano la loro cache interna, ma è comune che progetti differenti possano usare tool differenti, che comprendono file di lock e così via. Quei tool non sono in grado di condividere la cache, l'unica soluzione è centralizzata e si basa su un registro proxy, Verdaccio memorizza nella cache tutti i metadati e i tarball vengono scaricati su richiesta riuscendo a condividerli in tutto il progetto.
- Evita che qualsiasi registro remoto restituisca improvvisamente l'errore HTTP 404 per gli archivi tar in cui erano prececdentemente disponibili (anche nodo come errore left-pad).
Strategie per build più veloci
Siamo alla ricerca di ulteriori strategie, condividi la tua esperienza in questo campo
Evitare il Caching di tarball
Se si ha a disposizione uno spazio di archiviazione limitato, si dovrebbe evitare di memorizzare nella cache tarball; abilitando false su cache
in ciascun uplink si memorizzeranno nella cache esclusivamente file di metadati.
uplinks:
npmjs:
url: https://registry.npmjs.org/
cache: false
Estensione della Data di Scadenza della Cache
Verdaccio di default attende 2 minuti per invalidare i metadati della cache prima di recuperare nuove informazioni dal registro remoto.
uplinks:
npmjs:
url: https://registry.npmjs.org/
maxage: 30m
Incrementando il valore di maxage
in ciascun uplink
, i remoti verranno interrogati con minore frequenza. Questa potrebbe essere una strategia valida in caso non si aggiornino le dipendenze così spesso.
Utilizzare la memoria invece dell'hardrive
A volte non è un passaggio fondamentale memorizzare nella cache pacchetti, quanto memorizzare pacchetti di route da registri differenti e accelerare le fasi di build. Sono disponibili due plugin per evitare del tutto di scrivere su un hard drive fisico utilizzando la memoria.
npm install -g verdaccio-auth-memory
npm install -g verdaccio-memory
La configurazione appare come questa
auth:
auth-memory:
users:
foo:
name: test
password: test
store:
memory:
limit: 1000
Ricorda, una volta che il server viene riavviato i dati vengono persi, raccomandiamo questa configurazione in casi in cui non sia necessario che continui a funzionare.