为什么 Markdown 通常在后端解析?

Why Markdown is usually parsed in backend?

我的印象是Markdown可以在Frontend中轻​​松解析,这样做也节省了服务器处理资源。但我遇到过许多在后端解析 Markdown 的 Web 应用程序,例如 Gitlab、Github、FetLife.

在后端而不是在前端解析 Markdown 有什么优势?

有很多原因。以下是不分先后顺序的部分列表:

  • 页面很少只包含 Markdown 内容。其他的内容,比如站点导航、侧边栏等无论如何都需要在服务端渲染。因此,整个页面都呈现在服务器上。
  • 通常需要对渲染后的内容进行后处理 HTML。在托管用户提供的内容时,这通常包括基于安全的过滤器。这些过滤器通常是保密的,以便更难找到 workarounds/loopholes 用于恶意目的。
  • 该站点可能包含来自 Markdown 以外的来源(ReST、asciidoc、.org、texttile 等)的内容。并非所有这些格式都有可用的基于 Javascript 的解析器。
  • 可以缓存服务器端呈现的任何内容,无需为每个请求重新呈现页面。请注意,我说的是托管在服务器上的缓存系统,而不是浏览器缓存。因此,在某些情况下,单个缓存页面可用于所有用户,这将大大减少服务器上的负载,更不用说利用客户端呈现了。
  • @Matthew mentions in a 所述,“在后端执行操作有助于提高搜索引擎的索引能力。”

像 GitHub 这样的大型网站可能会列出所有这些原因。事实上,GitHub 实际上记录了 github/markup 处的标记处理。请注意,第 1 步(共 5 步)涉及从源标记语言转换为 HTML。第 2 步到第 5 步全部在之后单独发生,并且无论使用哪种标记语言都是相同的。