Ho fatto alcuni progetti basati sul web e la maggior parte delle difficoltà che ho incontrato (domande, confusione) potrebbero essere risolte con l'aiuto. Ma ho ancora una domanda importante, anche dopo aver chiesto ad alcuni sviluppatori esperti: Quando la funzionalità può essere implementata sia con codice lato server e scripting lato client (JavaScript), quale dovrebbe essere preferito?Logica lato client O logica lato server?
Un semplice esempio:
per il rendering di una pagina html dinamica, posso formattare la pagina in codice lato server (PHP, Python) e utilizzare Ajax per recuperare la pagina formattata e renderlo direttamente (più logica sul lato server, meno sul lato client).
È anche possibile utilizzare Ajax per recuperare i dati (non formattati, JSON) e utilizzare lo script sul lato client per formattare la pagina e renderla più elaborata (il server riceve i dati da un DB o altra origine e restituisce al client con JSON o XML. Più logica sul lato client e meno sul server).
Quindi, come posso decidere qual è il migliore? Quale offre prestazioni migliori? Perché? Quale è più user-friendly?
Con i motori JS dei browser in evoluzione, JS può essere interpretato in meno tempo, quindi dovrei preferire lo scripting lato client?
D'altra parte, con l'hardware in continua evoluzione, le prestazioni del server sono in aumento e il costo della logica lato server diminuirà, quindi dovrei preferire lo scripting lato server?
EDIT:
Con le risposte, voglio dare un breve riassunto.
A favore di logica lato client:
- migliore esperienza utente (più veloce).
- Minore larghezza di banda della rete (costo inferiore).
- Scalabilità aumentata (carico server ridotto).
A favore di logica server-side:
- problemi di sicurezza.
- Migliore disponibilità e accessibilità (dispositivi mobili e vecchi browser).
- Meglio SEO.
- Espandibile facilmente (può aggiungere più server, ma non può rendere il browser più veloce).
Sembra che abbiamo bisogno di bilanciare questi due approcci di fronte a uno scenario specifico. Ma come? Qual è la migliore pratica?
userò la logica lato client ad eccezione delle seguenti condizioni:
- critici di sicurezza.
- Gruppi speciali (JavaScript disabilitato, dispositivi mobili e altro).
+1; Non ho mai pensato di criticare la falsa dicotomia nella domanda dell'OP (questo ** o ** quello). –
+1 Sempre entrambi: si * vogliono * l'UX ei vantaggi prestazionali di cliet-side ma * hanno bisogno * della sicurezza e del controllo del lato server. – annakata
sì, Eric, sono quasi d'accordo con te. Ma qual è la migliore pratica? Come posso bilanciare questi due approcci? Come posso applicare ciascun approccio a uno scenario diverso con una guida? qual è la guida? Grazie. –