Conversione del testo - Javascript prima di salvare in db, o php durante il recupero?

1

Per farla breve, ho un sito di social networking che ho scritto un po 'indietro come "prova del concetto" per me stesso che avevo le capacità per farlo. Ho deciso di rivisitarla e "migliorare" molte delle cattive pratiche di codifica che ho avuto quando ho scritto la cosa per la prima volta (3 anni fa).

La mia situazione attuale

Gli utenti possono creare post. Durante la pubblicazione, sono consentiti alcuni tag in stile bbcode, così come molte emoticon e simili. Attualmente, prendo il post e lo memorizzo in un database mySQL esattamente nel modo in cui è stato scritto. Quando richiamo il post, utilizzo php & espressioni regex per convertire questi tag e smiley nell'html appropriato. Ad esempio, potrei convertire :) in <img src='/images/smiley.gif' /> .

Funziona bene ... ma poi ho avuto modo di pensare (probabilmente una cattiva idea).

La mia soluzione proposta

Devo pensare che fare questa conversione ogni volta che il post viene recuperato dal database non è probabilmente ottimale, in quanto vi è una quantità di utilizzo della CPU lato server per eseguire tutte le sostituzioni regex.

L'approccio che penso mi piacerebbe fare è la conversione prima del tempo e l'archiviazione della versione html del post nel database. In questo modo, quando lo recupero le successive 100 o più volte, non ho bisogno di continuare a fare la conversione. Ho intenzione di memorizzare sia il testo originale (da utilizzare per la modifica del post) sia il testo convertito (per visualizzare il post).

Oltre a occupare più spazio nel database (sto ora memorizzando una versione di testo non elaborata e una versione HTML, c'è qualche svantaggio nell'approccio che sto pensando di usare? Oppure sembra ragionevole ottimizzazione dell'intero processo?

Aggiornamento

Quindi ... dopo aver letto i commenti di voi ragazzi, sembra che probabilmente non ci sono molte ragioni (ok, nessuna ragione) per provare a fare questo lato client piuttosto che lato server come sto facendo ora. Perché mi è venuta in mente un'idea così pazza in primo luogo?

Bene ... in questo momento, memorizzo il testo di bbcode-ish nel database e quando creo la pagina, eseguo una funzione sostituendo tutto il codice con html. Quello che voglio fare è mostrare una finestra di anteprima, simile al sito StackExchange, in modo che quando gli utenti inseriscono i loro post, possano vedere quale sarebbe il risultato formattato. Suppongo di doverlo fare tramite Javascript, quindi ho praticamente duplicato il preg_replace che utilizzo in php con le funzioni di sostituzione in Javascript, così posso mostrare l'anteprima mentre l'utente inserisce il testo.

Soooo ... Sto duplicando il codice di sostituzione del testo, una volta in php, una volta in js. Ho pensato che forse avrei dovuto trovare il modo di non dover scrivere il codice due volte ... ma dopo un po 'di riflessione, forse è un piccolo compromesso gestirlo in questo modo.

Volevo solo condividere ciò che mi girava in testa per mettere il mio in questo percorso, in primo luogo ...

    
posta Charlie74 09.12.2013 - 22:35
fonte

1 risposta

1

Fintanto che stai mantenendo l'originale per il caso quando qualcosa nel rendering del bbcode cambia lungo la strada, e lo spazio extra non è un problema per te, non c'è niente di male in questo approccio. Stai implementando efficacemente il caching. Se segui questo percorso, assicurati di utilizzare gli stili CSS anziché gli stili codificati, in questo modo puoi adattarti al client di conseguenza senza modificare l'html pregenerato.

Un'altra opzione è quella di inviare il bbcode al browser nella sua forma originale, e avere il javascript sul lato client per gestire la trasformazione del testo.

    
risposta data 10.12.2013 - 00:07
fonte

Leggi altre domande sui tag