Сделать разметку на лету или сохранить HTML? - PullRequest
2 голосов
/ 24 января 2009

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

  1. Сохранение разметки в базе данных и отображение в HTML на сервере для каждого просмотра страницы. (Меньше места в базе данных, но больше ресурсов процессора)

  2. Сохранение разметки в базе данных и отображение в HTML на клиенте с использованием JavaScript. (Возможно, сложнее реализовать)

  3. Хранить только визуализированный HTML в базы данных и преобразовать обратно в разметку, если требуется редактирование. (Опять же, возможно, сложно реализовать).

  4. Храните HTML и разметку в база данных. (Удвойте пространство базы данных).

  5. Что-то еще.

(я использую MFC & Linqtosql).

Ответы [ 4 ]

7 голосов
/ 24 января 2009

Я бы сохранил его в базе данных как разметку Wiki, а затем поместил преобразованный вывод HTML в память в кеш на веб-сервере. Независимо от того, какую веб-технологию вы используете, все должны это поддерживать - базовый кортеж (хеш-таблица), введенный по URL, или идентификатору, или тому подобное.

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

Я бы сохранил его в базе данных как разметку RST и преобразовал бы в HTML по мере необходимости. Поскольку вы, вероятно, используете внешний интерфейс (например, JSP, PHP, Django или что-то еще, что визуализирует язык шаблонов), дополнительная обработка для RST не потребует больших накладных расходов.

Фактически измерьте фактические издержки рендеринга разметки в HTML, прежде чем принять решение о реализации сложного механизма кэширования.

«(Меньше места в базе данных, но больше ресурсов процессора)» - это не измеряемый факт, а предположение, которое может оказаться неверным.

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

Самый простой способ - хранить разметку и отображать HTML по требованию в кэше (возможно, на диске или в объектах memcached) с отметкой времени визуализации. Таким образом, вы можете проверить, нужно ли вам снова выполнять рендеринг, потому что разметка изменилась или просто обслуживаете кэшированный HTML. Именно так работает большинство приложений Ruby on Rails / CMS.

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

Я бы сохранял разметку и рендерил html серверную часть на лету. Вы можете использовать кэширование на стороне сервера, чтобы уменьшить объем выполняемых вами вычислений, и вы можете сохранить представление, которое имеет разумную семантику и может быть преобразовано в text / html / pdf, если необходимо.

...