Разбор уценки на лету

Я хочу применить уценку к моим форумам.

Я исследую множество возможных подходов, как бы я это сделал, и вот что я подумал:

Простой подход будет включать pagedown на стороне клиента и php-markdown на сервере.

Мой подход заключается в сохранении чистой разметки в базе данных и при отображении конвертировать в HTML (с pagedown). Поскольку у меня уже есть уровень безопасности для моей серверной части (белый список элементов HTML) и весь необходимый персонал, я не вижу здесь ничего, что можно было бы потерять.

Что я выиграю в этом случае? ну, я должен изменить pagedown, чтобы использовать пользовательские кнопки и шаблоны. Мне было бы сложно поддерживать как php, так и JavaScript.

Мой вопрос: это хороший подход? Чтобы сломать этот вопрос:

  1. Есть ли какие-либо серьезные издержки на стороне клиента, загружающие около 30 сообщений и конвертирующие его в HTML (производительность)
  2. Имея идею, что я проверяю белый список элементов, есть ли какая-то проблема безопасности, о которой мне нужно знать? (Безопасность)

4 ответа

Решение

Я бы не стал использовать механизмы уценки на стороне клиента. Из нескольких быстрых поисковиков, по его мнению, он сильно загружает процессор. Загрузка 30 постов добавит немного накладных расходов.

Если вы хранили MD в БД, визуализировали в HTML на лету, то использовали некоторое кэширование (memcached или redis), которое могло бы работать довольно хорошо.

Что касается безопасности, то здесь есть хорошее прочтение, потребуется дополнительная дезинфекция, удаление скриптов / ссылок / перенаправлений и т. Д.

дальнейшее чтение

Преобразование уценки со стороны клиента не рекомендуется, как заявляет @Lex. Вместо этого вы можете использовать некоторые онлайн-сервисы, чтобы конвертировать HTML-разметку top для вас.
Взгляните на http://daringfireball.net/projects/markdown/dingus. Вы можете использовать curl или что-то еще, чтобы опубликовать уценку на сайте, а затем отказаться от сайта, чтобы принять участие в html. Вы также можете посмотреть здесь http://parsedown.org/

У вас есть два варианта:

  • Strapdown - позволяет создавать документы уценки без обработки на стороне сервера, как вы можете видеть на этой странице, даже без кода, просто используя статические файлы
  • markdown-js - позволяет создать документ уценки с обработкой на стороне клиента (javascript)

Вот как я это делаю:

Сохраните код уценки в БД, и при рендеринге я кеширую результат в файл (файл, Memcached или любой другой механизм хранения кеша, который вы хотите). Таким образом, я сохраняю оригинал в базе данных и не трачу ресурсы на компиляцию уценки при каждом посещении страницы, вместо этого я обслуживаю файл кэша до тех пор, пока он не истечет или не будет удален из-за изменения.

Другие вопросы по тегам