动态解析降价

问题描述 投票:0回答:4

我想在我的论坛中实现 Markdown。

我研究了许多可能的方法,我将如何做到这一点,这就是我的想法:

一个简单的方法是在客户端使用 pagedown 并在服务器上使用 php-markdown。

我的方法是将纯 Markdown 保存到数据库,并在显示时转换为 HTML(使用 pagedown)。由于我的服务器端已经有了安全层(HTML 元素白名单)和所有必要的人员,所以我认为这里不会有任何损失。

在这种情况下我赢了什么?好吧,我必须修改 pagedown 以使用自定义按钮和模式。这对我来说很难同时维护 php 和 JavaScript。

我的问题是:这是个好方法吗? 要打破这个问题:

  1. 客户端加载 30 左右是否有严重的开销 帖子并将其转换为 HTML(性能)
  2. 按照我检查元素白名单的想法,有没有什么 我需要了解的安全问题? (安全)
javascript php security markdown pagedown
4个回答
4
投票

我不会使用客户端降价引擎。从一些快速的谷歌搜索来看,它非常消耗 CPU 资源。加载 30 个帖子会增加相当多的开销。

如果您将 MD 存储在数据库中,动态渲染为 HTML,然后使用一些可以很好地工作的缓存(memcached 或 redis)。

关于安全性,这里有一篇很好的读物,它需要一些额外的清理工作,删除脚本/链接/重定向等。

进一步阅读


2
投票

正如 @Lex 所说,不建议从客户端转换 markdown。相反,您可以使用一些在线服务来为您转换 markdown top html。
看看 http://daringfireball.net/projects/markdown/dingus。您可以使用curl或其他东西将markdown发布到网站,然后废弃网站以获取html部分。 您也可以在这里看看 http://parsedown.org/


2
投票

您有两个建议选项:

  • Strapdown - 允许创建 Markdown 文档,无需服务器端处理,正如您在该页面上看到的那样,即使没有代码,只需使用静态文件
  • markdown-js - 允许使用客户端处理(javascript)创建 Markdown 文档

1
投票

这是我的做法:

将 markdown 代码保存在数据库中并在渲染时将结果缓存在文件中(文件、Memcached 或您想要的任何缓存存储引擎)。这样,我将原始文件保留在数据库中,并且不会在每次访问页面时浪费资源来编译 markdown,而是提供缓存文件,直到它过期或因更改而被删除。

© www.soinside.com 2019 - 2024. All rights reserved.