Le migliori pratiche per archiviare l'HTML proveniente da campi di testo in un database?

7

Ho un'applicazione che consente agli utenti di modificare alcune parti del testo e inviarlo via email. La mia domanda è qual è il modo migliore per archiviare questo in un database Microsoft SQL Server. In questo momento ho due tabelle, una con i dati HTML e una con i dati di testo normale. Quando l'utente salva le informazioni, sostituisce le newline con br's e le inserisce nella tabella di collegamento HTML e quindi inserisce il testo normale nell'altra tabella. In questo modo la casella di testo ha le newline quando vanno in edit, ma la tabella che contiene i dati HTML ha i BR. Questo sembra un modo sciocco per fare le cose. Quale sarebbe la migliore pratica? Grazie.

    
posta user1767270 25.06.2013 - 21:51
fonte

3 risposte

10

Non è affatto sciocco.

Considera le seguenti possibilità:

  1. Archivia solo HTML. Quel è stupido! Una volta memorizzato in questo modo, modificarlo sarebbe doloroso: dovresti decodificarlo o semplicemente proibire qualsiasi edizione o forzare gli utenti a scrivere HTML.

  2. Archivia solo testo. Potrebbe funzionare. Fino a quando, forse, scoprirai che convertire il testo in HTML è il collo di bottiglia¹ che rallenta l'applicazione. Per le app su piccola scala, questo approccio è ancora ok e probabilmente il più semplice.

  3. Memorizza testo e HTML. Questo è ciò che hai scelto e presenta i vantaggi di entrambi gli approcci precedenti: la modifica dei contenuti è semplice e allo stesso tempo non rallentare l'applicazione verso il basso eseguendo la conversione ogni volta che viene generata la pagina.

Se c'è una cosa che è fastidiosa, è il fatto che stai usando due tabelle. Perché non conservare questi dati in un'unica tabella, con una colonna per il testo originale e un'altra colonna per HTML?

¹ Ricorda una regola: non indovina cosa rallenta l'applicazione: usa un profiler. Discutere quale approccio è più veloce è buono per un colloquio informale con i tuoi amici, ma non è un buon approccio per sviluppare un'applicazione scalabile senza fare lavori inutili. Ad esempio, il mio esempio di come salvare HTML rispetto a generarlo al volo è valido solo in teoria. In pratica, (1) memorizzerete comunque i risultati nella cache e (2) forse, chissà, il caricamento dei dati dal database potrebbe essere molto più lento della generazione di HTML.

    
risposta data 25.06.2013 - 21:57
fonte
1

Se fossi in me, sostituirò semplicemente le newline con br come il testo viene usato. Quindi, salva il testo normale (newline), e quando devi usarlo in un'email, sostituisci le newline con br's al volo.

    
risposta data 25.06.2013 - 21:56
fonte
1

Potresti prendere in considerazione un'implementazione di BBCode . Ciò ti consentirà di archiviare testo semplice, che può essere convertito in HTML. Nessun tag HTML effettivo sarebbe consentito.

Da Wikipedia:

[b]bolded text[/b]

diventerebbe

<b>bolded text</b>

e così via.

    
risposta data 25.06.2013 - 22:04
fonte

Leggi altre domande sui tag