Qual è la procedura migliore per verificare se un client ha già scaricato le informazioni dal server? [chiuso]

0

Devo verificare quali dati non sono stati ancora scaricati. Ad esempio, in che modo Twitter o Facebook verificano se un cliente specifico ha già scaricato una parte di informazioni?

Quando un'app mobile come Twitter invia una richiesta a twitter.com, riceverà solo nuovi dati ma non i dati che ha già scaricato nelle vecchie richieste.

    
posta ADIMO 23.06.2011 - 09:42
fonte

3 risposte

3

Dipende dal preciso requisito.

Per qualcosa come Facebook / Twitter, dove non è la fine del mondo se qualcosa viene restituito due volte il meccanismo più semplice sarebbe quello di memorizzare un timestamp di ultimo download contro ogni utente / client e restituire solo dati più recenti di quel punto.

Se hai bisogno di una garanzia che ogni articolo sia stato consegnato e consegnato una sola volta (ad esempio per le transazioni finanziarie) la soluzione sarà probabilmente più complessa e implicherà una serie di chiamate: il client che richiede i dati, il server che restituisce i dati , il client conferma di aver ricevuto ed elaborato i dati e il server lo riconosce. In tal caso, sarei anche disposto a contrassegnare ogni record come scaricato individualmente anziché fare affidamento su un timestamp.

Devi anche considerare se hai a che fare con uno o più client e memorizzare il timestamp o qualsiasi altro modo (cioè contro ogni istanza del client piuttosto che ogni utente) e assicurati di avere un meccanismo per identificare con precisione ogni cliente .

    
risposta data 23.06.2011 - 10:26
fonte
2

Capisco a malapena la tua domanda. Cosa intendi per informazione? È un file, una pagina, un pezzo di dati astratto? Cosa intendi per cliente? È un browser, un computer identificato da un IP, un cliente registrato?

Il caso del cliente registrato è il più semplice. Quando si scarica un file o si carica una pagina o qualsiasi cosa, è possibile salvare un record in una tabella, dicendo che il cliente A ha richiesto il dato di dati B. Ci sono alcune sfumature, specialmente con il download di file, ma non ti darò fastidio con i dettagli, soprattutto perché è fuori tema e sarebbe più appropriato su StackOverflow.

Se invece vuoi monitorare i download dalla stessa macchina, puoi farlo identificandolo tramite l'indirizzo IP. Anche questo ha alcune difficoltà: la stessa persona che usa lo stesso dispositivo può cambiare l'IP anche durante la stessa sessione, oppure più dispositivi possono condividere lo stesso indirizzo IP (come due computer della stessa azienda collegati attraverso lo stesso router).

Infine, puoi monitorare il cliente attraverso i cookie. Questo ha due punti deboli: la persona può in qualsiasi momento eliminare o modificare il cookie (e qualcun altro può utilizzare lo stesso cookie), e se la persona cambia il browser, i cookie andranno persi.

A seconda del tuo problema preciso, puoi scegliere uno, due o tutti e tre i tipi di tracciamento per poter sapere più o meno chi ha scaricato cosa.

    
risposta data 23.06.2011 - 10:04
fonte
0

Se tieni traccia di ogni modifica ai dati, puoi utilizzare un checksum (come SHA-1 in Git o MD5 in rsync ) per determinare rapidamente dove per iniziare il prossimo download da. Se non tieni traccia delle modifiche atomiche, puoi invece chiedere a quando è successo l'ultimo download. La migliore pratica qui è semplicemente quella di

  • richiedere la più piccola informazione possibile per identificare ciò che è stato scaricato e
  • rispetta la privacy. L'autenticazione dovrebbe avvenire altrove, se necessario.
risposta data 23.06.2011 - 17:21
fonte

Leggi altre domande sui tag