¿Las mejores prácticas para almacenar HTML proveniente de campos de texto en una base de datos?

7

Tengo una aplicación que permite a los usuarios editar ciertas partes del texto y luego enviarlas por correo electrónico. Mi pregunta es cuál es la mejor manera de almacenar esto en una base de datos de Microsoft SQL Server. En este momento tengo dos tablas, una que contiene los datos HTML y otra que contiene los datos de texto sin formato. Cuando el usuario guarda la información, reemplaza las líneas nuevas con br's y la coloca en la tabla que contiene HTML y luego coloca el texto normal en la otra tabla. De esta manera, el cuadro de texto tiene las nuevas líneas cuando se van a editar, pero la tabla que contiene los datos HTML tiene los BR. Esto parece una forma tonta de hacer las cosas. ¿Cuál sería la mejor práctica? Gracias.

    
pregunta user1767270 25.06.2013 - 21:51

3 respuestas

10

No es tonto en absoluto.

Considera las siguientes posibilidades:

  1. Almacena solo HTML. ¡Eso es una tontería! Una vez almacenado de esta manera, editarlo sería doloroso: debería decodificarlo o simplemente prohibir cualquier edición o forzar a los usuarios a escribir HTML.

  2. Almacenar solo texto. Puede funcionar. Hasta que, tal vez, encuentre que la conversión de texto a HTML es un cuello de botella¹ que ralentiza su aplicación. Para aplicaciones a pequeña escala, este enfoque sigue siendo correcto y probablemente sea el más fácil.

  3. Almacene texto y HTML. Eso es lo que ha elegido y tiene los beneficios de los dos enfoques anteriores: la edición de contenido es simple y al mismo tiempo no disminuye la velocidad. La aplicación está abajo haciendo la conversión cada vez que se genera la página.

Si hay algo que es molesto, es el hecho de que estás usando dos tablas. ¿Por qué no mantener estos datos en una sola tabla, con una columna para el texto original y otra columna para HTML?

¹ Recuerde una regla: no adivine lo que está ralentizando la aplicación: use un generador de perfiles. Discutir qué enfoque es más rápido es bueno para una conversación informal con tus amigos, pero no es un buen enfoque para desarrollar una aplicación escalable sin hacer un trabajo innecesario. Mi ejemplo de guardar HTML en lugar de generarlo sobre la marcha, por ejemplo, solo es bueno en teoría. En la práctica, (1) almacenará en caché los resultados de todos modos, y (2) quizás, quién sabe, cargar los datos de la base de datos puede ser mucho más lento que generar HTML.

    
respondido por el Arseni Mourzenko 25.06.2013 - 21:57
1

Si fuera yo, simplemente reemplazaría las nuevas líneas con br's a medida que se usa el texto. Por lo tanto, almacene el texto sin formato (nuevas líneas) y luego, cuando tenga que usarlo en un correo electrónico, reemplace las nuevas líneas con br sobre la marcha.

    
respondido por el Ryan Kinal 25.06.2013 - 21:56
1

Puede considerar una implementación de BBCode . Esto le permitirá almacenar texto plano, que se puede convertir a HTML. No se permitirían etiquetas HTML reales.

De Wikipedia:

[b]bolded text[/b]

se convertiría en

<b>bolded text</b>

y así sucesivamente.

    
respondido por el Adrian J. Moreno 25.06.2013 - 22:04

Lea otras preguntas en las etiquetas