Подтвердить что ты не робот

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

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

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

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

Спасибо!

4b9b3361

Ответ 1

Сохранить уценку:

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

Сохранить html

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

Сохраните оба

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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