有vps,想架设一个网站,直接指向一个md文件,访问的时候直接转成html返回给用户。修改的时候直接修改md就行,网站后端发现md更新了自动重新转。
另外,希望能支持vue3,即在vue3中写个div标签,指向md文件,自动加载并显示。
有vps,想架设一个网站,直接指向一个md文件,访问的时候直接转成html返回给用户。修改的时候直接修改md就行,网站后端发现md更新了自动重新转。
另外,希望能支持vue3,即在vue3中写个div标签,指向md文件,自动加载并显示。
直接引入这个
import sys
import markdown
import codecs
css = '''
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
<!-- 你可以在这里写你网页的样式,自己考虑 -->
</style>
'''
def main(argv):
name = argv[0]
in_file = '%s.md' % (name)
out_file = '%s.html' % (name)
input_file = codecs.open(in_file, mode="r", encoding="utf-8")
text = input_file.read()
html = markdown.markdown(text)
output_file = codecs.open(out_file, "w",encoding="utf-8",errors="xmlcharrefreplace")
output_file.write(css+html)
if __name__ == "__main__":
main(sys.argv[1:])
不算样式15行代码搞定,运行后自动搜索脚本同目录下的md文件,转为同名html文件
宝塔面板加个定时任务,定期运行就行了
Nginx写个规则,当用户访问具体的md时,给他返回同名html
宝塔面板我不太了解,但您可以试试 Docsify:
除了docsify还有vitepress
不是个好方案,因为每一个用户的每一次请求,都需要实时的将MD转换成HTML,效率非常慢,高并发的时候会很有压力。所以,这种工具不太好找
用缓存的方式,更新了才转,cdn不也是类似的原理么?
如果我的理解没有错的话,你所说的
是指,在服务器上,并没有一个预先生成的HTML文件,而是在请求的时候,实时将这个MD文件渲染成HTML。那么,这就意味着,每一个请求都要进行一次渲染,这是极其昂贵的开销,成熟的产品完全不会这么做。
而且,因为HTML是实时渲染,所以根本不存在缓存,也没办法提升效率。
如果你用了缓存,上了CDN,也就是说必须要提前把MD渲染成了HTML,这叫做静态页面。跟你的思路完全不一样。所以并不满足你的要求。
我觉得他指的是把md转html的结果存到缓存,请求来的时候缓存里有直接返回缓存,没有才转一次
他是这么说的,所以,就是实时转换,没有缓存的余地
不过,我还是觉得这是个很垃圾的设计,高并发场景下这种设计能有一百种死法
所以实际上我感觉他的意思是
估计也就几百篇文章,手搓的话用定时任务起个转换脚本以30分钟到1个小时的间隔,遍历整个文件夹及子文件夹里md文件的修改时间,改了就生成新的html。然后想立刻改就手动运行一下转换脚本。性能上能接受。
其实我想的是直接访问html.
转换的话,本来想的是记录一下md文件的hash,访问的时候发现hash变了就更新一下缓存的html,否则直接返回缓存的html。
不过定时任务也没问题。本来想的是一个插件就能解决,不用再额外部署太多东西了
不专业,表述的不清楚。
上面推荐的静态生成器足够了,走git
最多再通过CF之类的服务商控制用户缓存页面的时间
我觉得没什么内容需要把md实时生成新的HTML,大厂都没这需求。
如果你要先将MD转换成HTML,再发送给用户,那么,成吨的静态页面生成工具,哪个都够你用的。而且解决你的这个问题都很容易