Как сохранить облегченное форматирование (Textile, Markdown) в базе данных?

Я собираюсь реализовать облегченный язык форматирования (возможно, Textile, возможно, Markdown) в проекте, над которым я работаю, и мне интересно, как лучше всего сохранить его в базе данных.

Если пользователь может редактировать контент, который он публикует, для меня имеет смысл сохранить исходную непреобразованную разметку, чтобы пользователю не приходилось редактировать HTML в следующий раз. Но поскольку контент будет отображаться намного больше, чем редактироваться, также имеет смысл хранить преобразованную копию контента, чтобы оригинал не нужно было отправлять через Textile при каждом просмотре страницы.

Итак, является ли распространенной практикой хранение в базе данных как исходного, так и преобразованного контента бок о бок? Есть ли способ лучше?

Спасибо!


person Justin Stayton    schedule 29.01.2009    source источник


Ответы (4)


Уценка магазина:

  • Каждый просмотр = конверсия
  • Каждое изменение = без обработки

Магазин html

  • Каждый просмотр = без обработки
  • Каждое редактирование = преобразование в уценку и обратно

Хранить оба

  • Каждый просмотр = без обработки
  • Каждое редактирование = преобразование в HTML после редактирования

Вы должны взвесить свои затраты на обработку и затраты на хранение.

person cjk    schedule 29.01.2009

Вы должны обязательно хранить исходную разметку Textile / Markdown и использовать либо стандартный материал для кэширования HTTP (Last-modified, Expires-At, ETag) для кеширования отрисованных страниц, либо просто кэшировать результат обработки разметки.

person Anton Gogolev    schedule 29.01.2009

В настоящее время я использую Markdown с PHP. Я храню источник уценки в базе данных и по запросу показываю преобразованную версию. У меня нет проблем с производительностью, и я очень доволен этой настройкой.

person Sampson    schedule 29.01.2009

Я действительно видел, как хранить скомпилированный HTML в отдельной строке в базе данных. Просто создайте одну строку content, а другую - content_html и сохраните скомпилированный HTML в строке content_html.

(Наверняка у вас есть какой-то метод сохранения, который вы можете переопределить для этого?)

person winsmith    schedule 29.01.2009