L’output di Immich può differire perché i client nativi e quelli browser trasformano la stessa risposta del server attraverso richieste, cache, decodificatori e pipeline di rendering differenti.
Una foto può apparire immediatamente in un browser desktop, ma caricarsi lentamente, essere ritagliata diversamente o non riuscire a caricarsi nell’app del telefono con lo stesso account. Il server è solo una fase; il comportamento di rete del client, lo stato memorizzato, le autorizzazioni della piattaforma e le capacità multimediali determinano il risultato finale visibile.
La risposta del server non è la visualizzazione finale
Immich può restituire lo stesso identificativo dell’elemento e la stessa derivazione, mentre due client lo visualizzano in modo diverso. Ogni client deve pianificare le richieste, ricevere i byte, decodificare i contenuti multimediali, applicare l’orientamento o il layout e disegnare l’interfaccia. Un ritardo o una differenza visiva introdotti dopo la risposta non implicano necessariamente contenuti diversi nel database.
L’articolo di ZimaSpace sul percorso dei dati di Immich separa la selezione nel database dalla risposta multimediale e dal completamento visibile al client. Questo modello evita un errore diagnostico comune: considerare ogni schermata lenta o incoerente come prova che il server abbia generato una risposta diversa.
Quando possibile, misura due istanti: il completamento della risposta API e il momento in cui il contenuto multimediale diventa utilizzabile visivamente. Se i tempi della risposta coincidono ma quelli della visualizzazione divergono, concentrati su decodifica, rendering, archiviazione locale e stato della piattaforma. Se le risposte differiscono, torna a esaminare le richieste, l’ambito dell’account o l’elaborazione del server.
I client nativi e quelli browser generano schemi di richieste diversi
Un’app nativa può precaricare gli elementi della cronologia, riprovare in background, sincronizzare i caricamenti o raggruppare le richieste in modo diverso rispetto a una scheda del browser. Il browser ha limiti di connessione, regole di caching, service worker e un ciclo di vita della pagina propri. Di conseguenza, gesti di scorrimento identici non devono necessariamente generare traffico identico.
Un caso della community segnala che l’interfaccia browser è raggiungibile mentre l’app mobile rifiuta l’endpoint del server. La configurazione specifica non costituisce una prova generale sul comportamento di ogni client, ma dimostra che la distribuzione della pagina web e la convalida dell’API nativa possono seguire aspettative diverse riguardo a richieste e URL.
Cattura una breve traccia delle richieste per lo stesso account, album e percorso di rete. Confronta gli URL degli endpoint, i codici di stato, la concorrenza delle richieste, le dimensioni delle derivazioni trasferite e gli intervalli tra i tentativi. Un picco visibile in un solo client spiega una pressione diversa senza richiedere modifiche all’elemento memorizzato in Immich.
Le cache e i decodificatori multimediali modificano il risultato apparente
I browser e le applicazioni native conservano miniature, risorse dell’applicazione, credenziali e contenuti multimediali decodificati diversi. Possono inoltre scegliere percorsi di decodifica hardware o formati derivati differenti. Un client può riutilizzare una miniatura già disponibile nella cache, mentre un altro la scarica o la decodifica nuovamente, facendo apparire incoerente il server quando lo stato del client è diverso.
Una discussione della community su un client Android nativo alternativo sostiene che le scelte implementative del client possano influenzare reattività ed esperienza utente. Non si tratta di un test comparativo controllato, ma supporta il fatto architetturale che front-end separati non espongano un unico percorso di esecuzione identico.
Svuota solo la cache del client in esame, conserva lo stato del server e ripeti il test con un elemento noto. Poi confronta una ripetizione immediata senza svuotare la cache. Se la differenza si riduce dopo il riscaldamento della cache, il riutilizzo lato client è rilevante. Se un formato non funziona sempre, esamina il supporto dei codec, la scelta della derivazione e la decodifica hardware anziché la posizione nel database.
Esegui un test comparativo tra client
Scegli un account, un album noto, un’immagine e un video. Collega entrambi i client alla stessa rete e registra la versione del server, la versione del client, l’URL e lo stato della cache. Testa nell’ordine login, risposta della cronologia, apertura dell’immagine completa, avvio del video e una ricerca.
Un progetto della community di SailfishOS che discute un client nativo di Immich evidenzia che un’implementazione separata deve compiere le proprie scelte riguardo all’integrazione con la piattaforma e all’esperienza utente. Questo rafforza il motivo per cui l’identità del client è una variabile reale, anche quando ogni implementazione comunica con lo stesso backend.
Indica la prima divergenza come richiesta, risposta, trasferimento, decodifica, rendering o autorizzazione. Modifica solo quel livello: URL, stato della cache, formato multimediale, autorizzazione del client o versione dell’applicazione. La spiegazione è accettata solo quando la modifica controllata elimina la differenza senza alterare i record del server o la titolarità dell’utente.
Hub Tecnologico e AI
Altro da leggere

Perché Immich rielabora i dati esistenti dopo un aggiornamento?
Immich potrebbe rielaborare gli asset quando un aggiornamento rende non più validi derivati, metadati, modelli o lo stato dei processi precedenti; un’elaborazione ripetuta e...

Quali dipendenze determinano più spesso il reale limite delle prestazioni di Immich?
Immich è limitato dalla dipendenza più lenta di ogni percorso misurato, quindi caricamento, ricerca, navigazione e riproduzione possono avere limiti diversi.

Rete di Immich: come rilevamento, DNS e routing garantiscono la raggiungibilità
Immich è raggiungibile solo quando la selezione dell’endpoint, il DNS, il routing, il NAT o la gestione del proxy, il TLS e la risposta...

