Pregunta

Voy a implementar un lenguaje de formato ligero (probablemente Textil, tal vez Markdown) en un proyecto en el que estoy trabajando, y me pregunto cuál es la mejor manera de almacenarlo en la base de datos.

Si el usuario puede editar el contenido que está publicando, tiene sentido para mí que el marcado original no convertido se almacene para que el usuario no tenga que editar HTML la próxima vez. Pero dado que el contenido se mostrará mucho más que editado, también tiene sentido almacenar una copia convertida del contenido para que el original no tenga que enviarse a través de Textiles en cada vista de página.

Entonces, ¿es una práctica común almacenar el contenido original y el contenido convertido en paralelo en la base de datos? ¿Hay una mejor manera?

¡Gracias!

¿Fue útil?

Solución

Descuento de tienda:

  • Cada vista = conversión
  • Cada edición = sin procesamiento

Almacenar HTML

  • Cada vista = sin procesamiento
  • Cada edición = convertir a Markdown y viceversa

Almacenar ambos

  • Cada vista = sin procesamiento
  • Cada edición = convertir a html después de editar

Debe sopesar los costos de procesamiento frente a los costos de almacenamiento.

Otros consejos

Definitivamente, debe almacenar el marcado original de Textile / Markdown y usar material de almacenamiento en caché HTTP estándar (Última modificación, Caduca en, ETag) para almacenar en caché las páginas renderizadas o simplemente almacenar en caché el resultado del procesamiento de marcado.

Actualmente estoy usando Markdown con PHP. Almaceno el markdown-source en la base de datos y visualizo la Versión convertida a pedido. No tengo problemas de rendimiento y estoy muy contento con esta configuración.

Lo que he visto es almacenar el HTML compilado en una fila separada en la base de datos. Solo tiene una fila 'contenido' y otra 'content_html', y guarde el HTML compilado en la fila 'content_html'.

(¿Seguramente tienes algún tipo de método de guardar que puedes anular para hacer esto?)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top