# 帖子越长，编辑器变得无法使用地慢

**URL:** https://meta.discourse.org/t/editor-becomes-unusably-slow-as-post-gets-longer/240083
**Category:** Bug
**Created:** [2022年九月26日 13:02 UTC](https://meta.discourse.org/t/editor-becomes-unusably-slow-as-post-gets-longer/240083 "2022-09-26T13:02:50Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![php\_fan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/php_fan/32/275214_2.png) [@php\_fan](https://meta.discourse.org/u/php_fan)
#### Post date: [2022年九月26日 13:02 UTC](https://meta.discourse.org/t/editor-becomes-unusably-slow-as-post-gets-longer/240083/1 "2022-09-26T13:02:50Z")

</div>

我将此帖子发布到了一个使用 Discourse 的论坛：

> **[Annoying perl locale warnings](https://forum.manjaro.org/t/annoying-perl-locale-warnings/122709/3?u=teo8976)**
>
> This is the output of localectl: localectl  ✔ System Locale: LANG=en\_US.UTF-8 VC Keymap: es X11...

并且我也可以在演示论坛中重现此问题。

该帖子包含大量复制粘贴的代码片段——更确切地说，不是代码，而是运行命令的输出。在关于软件和计算机的求助论坛中，这是一个相当常见的用例。

在我撰写帖子时，粘贴了长文本块（甚至没有那么长，只有几百行）后，编辑器在输入时变得越来越卡顿。我输入字母需要一段时间才能显示在屏幕上（我说的不是实时预览，只是你输入的那个文本区域）。它基本上变得无法使用。

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [2022年九月26日 13:11 UTC](https://meta.discourse.org/t/editor-becomes-unusably-slow-as-post-gets-longer/240083/2 "2022-09-26T13:11:51Z")

</div>

> [@php\_fan](#):
>
> 我说的对吗，你们实际上要为这个软件收取许可费？

不。Discourse 是免费且开源的软件。

当我将[这个](https://forum.manjaro.org/raw/122709/3)复制/粘贴到编辑器中时，我能够重现此问题。它确实会变得非常迟钝。

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [2022年九月26日 14:53 UTC](https://meta.discourse.org/t/editor-becomes-unusably-slow-as-post-gets-longer/240083/3 "2022-09-26T14:53:36Z")

</div>

> [@RGJ](#):
>
> 当我将[这个](https://forum.manjaro.org/raw/122709/3)复制/粘贴到编辑器中时，我能够重现此问题。它确实会变得非常迟钝。

有趣的是，我在这里无法重现它：

> [@php\_fan](#):
>
> 我将此帖子发布到了一个使用 Discourse 的论坛上

我看到这个论坛的更新滞后了。上周我合并了一项更改，将 HighlightJS 库更新到了最新版本，这将使其快得多。

此外，[https://forum.manjaro.org](https://forum.manjaro.org) 实例具有 `autohighlight all code` 设置，这对于支持论坛来说不是一个好主意，因为大多数带有代码块的帖子将是简单的日志文件而不是实际代码。我建议他们的团队尽快禁用它。

除此之外，在主浏览器线程中突出显示超过 10k 行代码在某些设备上会明显变慢，在 Android 手机上打开 GitHub diff 时很容易看到这一点。我们计划在后台 JS 工作线程中实现这一点，但这存在一些缺点，我们还没有做到。

---

<div class="post-metadata">

### Author: ![php\_fan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/php_fan/32/275214_2.png) [@php\_fan](https://meta.discourse.org/u/php_fan)
#### Post date: [2022年九月27日 09:43 UTC](https://meta.discourse.org/t/editor-becomes-unusably-slow-as-post-gets-longer/240083/4 "2022-09-27T09:43:44Z")

</div>

> [@RGJ](#):
>
> 不。Discourse 是免费且开源的软件。

哦，我的错。在主页上我看到一个很大的“免费试用”按钮，这表明你只能免费\_试用\_它，并且在定价部分没有提到免费套餐。我猜那些是托管计划之类的。

> 另外，[https://forum.manjaro.org](https://forum.manjaro.org/) 实例具有 `autohighlight all code` 设置

是的，我已经注意到了，并猜测这可能是他们的配置错误，但这与问题无关。我可以粘贴一段同样长的合法 JavaScript 代码。即使问题实际上只由错误语法的代码高亮触发，这也不能证明代码块外的编辑器变得迟钝。

> 在主浏览器线程上高亮超过 10k 行代码在某些设备上会明显变慢

是的，但当我在代码块之外编辑帖子的其余部分时，没有理由发生这种情况。无论你是在主线程中执行此操作（显然是错误的——很高兴听到你正在修复它）还是在后台执行，一旦代码被高亮并且你不再编辑它，就不应该再进行任何与高亮相关的操作了。任何与高亮相关的解析、计算等操作只有在修改代码块的内容时才需要重新进行。
