zihanzy.com 2020-04-29 23:39 采纳率: 0%
浏览 102

Markdown语法实时转换html带来的性能问题

最近在我的个人博客http://www.zihanzy.com上发现一个巨大的性能问题
点击某篇文章至少要加载3,4秒左右。

因为我后台的编辑器是markdown类型的,数据库存储的也是markdown但在读取的时候就需要将markdown实时转换成html,前台转换html我用的是editor.md。
因为没有做缓存,每次读取的文章的时候都会实时转换一次,这个转换太耗费时间,之前也想过将markdown转换成html然后做缓存,但是我没有找到这方面比较全面的插件,转换出来的html很多效果都没有比如代码高亮。
于是使用了editor.md实时转换,但这样付出的代价太大了。

后来经过测试去掉实时转换的代码页面加载快多了,可是我又想保留markdown语法的正常解析
想问下有没有既能实现markdown语法的完美解析,又能减少页面加载时间的解决方案呢?

  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-16 20:55
    关注

    参考GPT和自己的思路:

    首先,可以考虑借助缓存来优化性能。将Markdown转换成HTML,并将HTML存储在缓存中,当用户请求文章时,直接从缓存中读取HTML即可。有些Markdown解析库已经有了缓存机制,例如Python中的mistune库,可以考虑使用这样的库。

    另外,如果缓存不适用于你的情况,还可以考虑使用现成的Markdown解析器和HTML渲染器。例如,将Markdown解析成AST(抽象语法树),然后使用一个轻量级的HTML渲染器将AST转换为HTML。这样可以大大减少转换时间和渲染时间。目前,有很多成熟的Markdown解析库和HTML渲染器可以使用,例如Python中的Markdown和HTMLPy库。

    最后,还可以考虑在前端使用JS库来渲染Markdown。这样可以将Markdown转换成HTML,并进行代码高亮等处理,然后将HTML呈现在前端。这样,可以减少服务器的负担,并提高页面的响应速度。例如,marked.js和highlight.js就是非常流行的前端Markdown解析和代码高亮库。

    评论

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名