otale / tale

🦄 Best beautiful java blog, worth a try

Home Page:https://tale.biezhi.me

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TaleUtils 类中 mdToHtml 存在性能问题

zealzhangz opened this issue · comments

具体分析可以看我的博客:
https://www.zhangaoo.com/article/index-page-slow-load

简单的解决办法就是加缓存,同时需要维护缓存,最简单粗暴的方法就是编辑和删除文章时清理全部缓存:

    public static String mdToHtml(String markdown) {
        if (StringKit.isBlank(markdown)) {
            return "";
        }

        String cacheContent =  cache.get(String.valueOf(markdown.hashCode()));
        if(cacheContent != null){
            return cacheContent;
        }

        List<Extension> extensions = Arrays.asList(TablesExtension.create());
        Parser          parser     = Parser.builder().extensions(extensions).build();
        Node            document   = parser.parse(markdown);
        HtmlRenderer renderer = HtmlRenderer.builder()
                .attributeProviderFactory(context -> new LinkAttributeProvider())
                .extensions(extensions).build();

        String content = renderer.render(document);
        content = Commons.emoji(content);

        // 支持网易云音乐输出
        if (TaleConst.BCONF.getBoolean(ENV_SUPPORT_163_MUSIC, true) && content.contains(MP3_PREFIX)) {
            content = content.replaceAll(MUSIC_REG_PATTERN, MUSIC_IFRAME);
        }
        // 支持gist代码输出
        if (TaleConst.BCONF.getBoolean(ENV_SUPPORT_GIST, true) && content.contains(GIST_PREFIX_URL)) {
            content = content.replaceAll(GIST_REG_PATTERN, GIST_REPLATE_PATTERN);
        }
        cache.set(String.valueOf(markdown.hashCode()),content,-1);
        return content;
    }

稍后我可以提个PR