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

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

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

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

Благодаря!

Solutions Collecting From Web of "Как хранить легкое форматирование (Textile, Markdown) в базе данных?"

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

  • Каждое представление = преобразование
  • Каждое редактирование = отсутствие обработки

Сохранить html

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

Храните оба

  • Каждое представление = отсутствие обработки
  • Каждое редактирование = преобразование в html после редактирования

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

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

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

То, что я видел, – это действительно хранить скомпилированный HTML в отдельной строке в базе данных. Просто добавьте один контент «content» и еще один «content_html» и сохраните скомпилированный HTML в строке «content_html».

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