Differenza tra Local Storage, Session Storage e Cookie in Angular: Una guida completa

  • Di
  • 2024-07-16 - 5 minuti
banner

Quando si tratta di memorizzare dati lato client, chi sviluppa ha diverse opzioni a disposizione. Vediamo quali!

localStorage, sessionStorage e cookie sono tre metodi popolari utilizzati per memorizzare dati all’interno del browser del cliente. Ognuno ha i suoi vantaggi e limitazioni, rendendo cruciale comprendere le differenze per prendere decisioni informate su quale utilizzare in un particolare scenario.

localStorage

L’oggetto localStorage è un meccanismo di memorizzazione client-side che consente alle applicazioni web di salvare dati localmente all’interno del browser dell’utente. È simile a sessionStorage, ma persiste anche dopo che il browser è stato chiuso e riaperto (e questo vale anche per i tab!). Infatti, localStorage può memorizzare una certa quantità significativo di dati, generalmente fino a 5-10 MB, rendendolo adatto per memorizzare informazioni che devono essere mantenute durante diverse sessioni.

Un esempio di implementazione con Angular 12+ è il seguente:

import { Component } from "@angular/core";

@Component({
  selector: "app-example",
  template: `
<p>Nome: {{ nome }}</p>
<button (click)="salvaNome()">Salva nome</button>
`,
})
export class ExampleComponent {
  nome = "";

  constructor() {
    this.nome = localStorage.getItem("nome");
  }

  salvaNome() {
    localStorage.setItem("nome", this.nome);
  }
}

Lo stesso esempio si potrebbe costruire sfruttando i Service di Angular, con il vantaggio di poter centralizzare la gestione di alcune informazioni:

// Servizio
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root',
})
export class LocalStorageService {
  get(key: string) {
    return localStorage.getItem(key);
  }

  set(key: string, value: any) {
    localStorage.setItem(key, value);
  }

  remove(key: string) {
    localStorage.removeItem(key);
  }
}

sessionStorage

L’oggetto sessionStorage, d’altra parte, è stato progettato per memorizzare dati per la durata della sessione del browser. Ciò significa che i dati vengono eliminati quando il browser è chiuso o il tab o la finestra viene chiuso. Questo vuol dire che è l’ideale per memorizzare dati che sono necessari solo durante una singola sessione, come applicazioni di prenotazione o pagine che hanno lo scopo di creare un account.

// Componente
import { Component } from '@angular/core';

@Component({
  selector: 'app-example',
  template: `
    <p>Nome: {{ nome }}</p>
    <button (click)="salvaNome()">Salva nome</button>
  `,
})
export class ExampleComponent {
  nome = '';

  constructor() {
    this.nome = sessionStorage.getItem('nome');
  }

  salvaNome() {
    sessionStorage.setItem('nome', this.nome);
  }
}

I cookie sono sempre piccole porzioni di dati memorizzati lato client da un sito web e possono essere utilizzati per memorizzare dati tra diverse richieste o sessioni. I cookie hanno una data di scadenza e possono essere impostati per essere persistenti o session-only. Inoltre, hanno un limite in termini di dimensioni più piccolo rispetto alle altre due opzioni: generalmente parliamo di massimo 4 KB per cookie, e possono essere accessibili e modificati utilizzando, ad esempio, delle API JavaScript.

// Componente
import { Component } from '@angular/core';
import { CookieService } from 'ngx-cookie-service';

@Component({
    selector: 'app-example',
    template: `
    <p>Nome: {{ nome }}</p>
    <button (click)="salvaNome()">Salva nome</button>
  `,
})
export class ExampleComponent {
    nome = '';

    constructor(private cookieService: CookieService) {
        this.nome = this.cookieService.get('nome');
    }

    salvaNome() {
        this.cookieService.set('nome', this.nome);
    }
}

Differenze Chiave

Ecco alcune differenze chiave tra Local Storage, Session Storage e Cookies:

  • Persistenza: Local Storage persiste anche dopo che il browser è stato chiuso e riaperto, mentre Session Storage viene eliminato quando il browser è chiuso o il tab o la finestra viene chiuso. I Cookies possono essere impostati per essere persistenti o session-only.
  • Limite di stoccaggio: Local Storage può memorizzare fino a 5-10 MB di dati, mentre Session Storage consente di memorizzare un ammontare di dati più grande rispetto ai Cookies. I Cookies hanno un limite di stoccaggio più piccolo, generalmente fino a 4 KB per cookie.
  • Gestione automatica: Session Storage non richiede gestione manuale dei dati di scadenza, poiché i dati vengono automaticamente eliminati quando il browser è chiuso o il tab o la finestra viene chiuso. Local Storage non ha un meccanismo di scadenza automatico, mentre i Cookies possono avere una data di scadenza impostata.
  • Accesso ai dati: I dati memorizzati in Local Storage e Session Storage possono essere accessibili direttamente utilizzando API JavaScript, fornendo accesso facile e manipolazione. I Cookies possono essere accessibili e modificati utilizzando API JavaScript, ma l’accesso è più limitato rispetto a Local Storage e Session Storage.
  • Trasporto di rete: I dati memorizzati in Local Storage e Session Storage non vengono inviati al server con ogni richiesta HTTP, riducendo il traffico di rete inutilizzato. I Cookies vengono automaticamente inviati al server con ogni richiesta HTTP per il relativo dominio, aumentando il traffico di rete.

Scegliere il meccanismo di memorizzazione giusto

Quando si decide quale meccanismo di memorizzazione utilizzare, considerare i seguenti fattori:

  • Persistenza dei dati: Se i dati devono persistere durante diverse sessioni, Local Storage è una scelta più adatta. Se i dati devono essere disponibili solo durante la sessione dell’utente, Session Storage è più adatto.
  • Dimensione dei dati: Se i dati sono piccoli, i Cookies potrebbero essere sufficienti. Per ammontare di dati più grandi, Local Storage è più adatto.
  • Sicurezza: Se i dati sono sensibili, Local Storage o Session Storage potrebbero essere una scelta più adatta a causa della loro natura client-side.

In altre parole, Local Storage, Session Storage e Cookie sono tre modi diversi di gestire le informazioni relative ai dati che viaggiano nelle request degli utenti.

Comprendere le differenze è cruciale per prendere decisioni informate su quale utilizzare in un particolare scenario. Considerando fattori come persistenza dei dati, dimensione dei dati e sicurezza, chi sviluppa può scegliere il meccanismo di memorizzazione più adatto per le loro applicazioni web.

Post correlati

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di Coderful

Non perderti gli ultimi aggiornamenti, iscriviti a TheRedCode Digest!

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

#TheRedComics

Edizione di Ottobre

A cura di Sophie Aiello, copy di Chiara Romano

Fumetto di agosto di Sophie Aiello

Vuoi diventare #tech content writer? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!