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 ...