【发布时间】:2017-07-21 18:28:26
【问题描述】:
我正在制作一个采用 markdown 语法的博客。我希望能够在每次击键时提供更新的预览,就像 Stackoverflow 在提问和回答问题时所做的那样。我目前的解决方案非常滞后。
Stackoverflow 如何实施他们的解决方案以提供 Markdown 文本的更新预览而不会造成延迟?
目前,我在 post-content 文本区域中的每次击键时都会对服务器进行 AJAX 调用。服务器清理内容并返回 HTML。然后preview div 将更新为新的 HTML:
$('#post-content').bind('input propertychange', (function() {
var content = {"content": this.value};
$.ajax({
...
success: function(data) {
$('#preview').html(data['content']);
}
...
});
}));
这不太好。如果我全速打字,文本区域最终会丢失大约 1/3 的字符。我的服务器是一个 500MB RAM 的微型虚拟机。我不确定服务器是否是瓶颈,但我不明白为什么 textarea 会因为 AJAX 调用缓慢而滞后 - 在我看来,这条线是瓶颈:
$('#preview').html(data['content']);
但我对前端开发的了解不够多,无法推测这一点。
【问题讨论】:
-
大多数库都可以在浏览器中完成
-
“目前,我在每次击键时都会对服务器进行 AJAX 调用...” 老实说?是的,这将是一个巨大的瓶颈。更不用说这些调用的异步性质了。
-
嗯,也许问题在于 AJAX 调用速度非常慢……但这只是猜测……
-
如果你确实想要一个服务器来处理这个(虽然我不知道为什么会这样),你最好分批做字符。此外,您会在发送另一个请求之前中止先前的请求。但是想要实时更新和服务器处理似乎是相互冲突的要求。
标签: javascript jquery html ajax markdown