Как сохранить легкое форматирование (Textile, Markdown) в базе данных? - PullRequest
18 голосов
/ 29 января 2009

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

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

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

Спасибо!

Ответы [ 4 ]

25 голосов
/ 29 января 2009

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

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

Магазин html

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

Хранить оба

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

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

1 голос
/ 29 января 2009

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

1 голос
/ 29 января 2009

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

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

1 голос
/ 29 января 2009

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

...