2012-05-04 10 views
14

Markdown parece ser más fácil de escribir y editar que HTML. Todos los editores de HTML que he visto producen una tonelada de basura innecesaria. Markdown parece más limpio.¿Debo convertir Markdown almacenado en HTML, o debería simplemente almacenar HTML?

Esto es lo que estoy pensando hacer: almacenar el descuento en la base de datos, convirtiéndolo a HTML con PHP Markdown, y luego enviarlo al navegador web.

Un problema es que tendría que hacer esto cada vez que se solicite una página. Esto parece un poco caro.

¿Es esta una buena idea? o hay una manera mas eficiente de hacer esto?

Respuesta

28

Como ejemplo práctico, Stack Overflow admite Markdown (como usted sabe), pero almacena ambos Markdown y HTML renderizado en la base de datos. Esto hace que sea mucho más rápido servir páginas, porque el HTML renderizado es siempre el mismo. Las publicaciones se crean con mucha menos frecuencia de lo que se muestran a los usuarios.

+0

esto es exactamente lo que estaba pensando. Si almacena el descuento, debe analizar cada carga de página. si analiza y almacena el html obtiene una carga de página más rápida, pero hace que sea prácticamente imposible de editar. Almacenar ambos (los bits son baratos) permite lo mejor de ambos mundos. –

+1

Como alternativa, también puede almacenar en caché el HTML convertido, limitando los hits al DB y la necesidad de almacenarlo. Por supuesto, depende de su aplicación :) – neolaser

1

Puede almacenar ambos. El descuento almacenado es útil si debe editarse varias veces, o si se desarrolla otra o mejor conversión de Markdown a HTML. El HTML almacenado es útil, como dices, para evitar regenerarlo una y otra vez.

7

Retroceda de su sitio y pregúntese qué tan "caro" realmente sería. ¿Sirves más de 1,000 únicos por día? Realistamente, ¿se va a disparar? Con todo este tipo de preguntas, la respuesta no es clara. Por ejemplo, cuando estaba construyendo sitios web para un banco internacional, un documento CSS no minimizado podía agregar 1 gigabyte por día de ancho de banda. Sin embargo, cuando estoy construyendo mi sitio de cartera, estoy esperando una fracción de ese tráfico.

Definitivamente no defiendo la construcción de código ineficiente ... solo tenga en cuenta que el "costo" realmente debería medirse como procesos de ejecución, no solo como proceso.

Si realmente le preocupa, registre antes y después de la ejecución de un proceso de rebaja de PHP. A continuación, realice un seguimiento de la carga del servidor durante un período de tiempo de forma A/B. Los números no mienten.

+0

Lo siento, si suena tonto ... grabar qué? el ancho de banda? el espacio en disco antes y después de la solicitud? – xameeramir

+1

@BountyMan, una práctica común en la codificación es hacer eco (o registrar) una marca de tiempo antes y después de una operación. De esta forma, puedes saber cuánto tiempo se requiere completar una función en particular. En el desarrollo de la interfaz de usuario, generalmente puede omitir ese paso y simplemente usar las herramientas de diagnóstico del navegador, pero en los lenguajes de back-end como PHP, parece más fácil incluir dos marcas de tiempo y trabajar desde allí. – bpeterson76

0

Recientemente completé un proyecto muy similar al que está pidiendo. En lugar de almacenar HTML completo en la base de datos, opté por almacenar html marcado en el sistema de archivos utilizando una API propietaria, muy similar a MongoDB. La belleza del almacenamiento marcado hacia abajo vs en toda regla es que la huella en el sistema de archivos es mucho más pequeña, y si alguna vez necesitó ver el descuento bruto, es mucho más fácil de leer. Cuando un usuario edita html, lo renderizo completo para que puedan ver cómo se ve.

Ha habido otras sugerencias para almacenar ambas, con las que no estoy muy de acuerdo. Si está buscando mejorar el rendimiento al no tener que marcar la versión marcada para cada solicitud, consideraría almacenar en caché la versión completa cada vez que se edite. El almacenamiento de derrotas completas y reducidas tiene como objetivo el marcado, ya que paga la penalización en espacio de disco y/o operaciones de base de datos.

Cuestiones relacionadas