mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-05 00:29:48 +03:00
Slow performance on large code blocks #2063
Closed
opened 2026-02-05 02:46:44 +03:00 by OVERLORD
·
6 comments
No Branch/Tag Specified
development
l10n_development
further_theme_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#2063
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @modem7 on GitHub (Jan 30, 2021).
Describe the bug
On large code blocks (1000+ line), editing performance is quite slow, and takes a while to edit it.
Can take around a minute to be able to start editing.
CPU spikes to 18% when opening (not surprising) for about 1-2 seconds, and no RAM usage change (currently only using around 120MB).
Steps To Reproduce
Steps to reproduce the behavior:
Expected behavior
Potentially faster/better optimised code block editing (if possible?)
Screenshots
https://omegawiki.modem7.com/books/docker/page/current-docker-compose
Your Configuration (please complete the following information):
Additional context
This may be an unusual edge case, so absolutely understandable if it's not high up on the priority list to investigate.
@ssddanbrown commented on GitHub (Jan 30, 2021):
Hi @modem7,
Could you confirm what editor you're using? The Default WYSIWYG editor or the markdown editor?
Additionally, Could you confirm the exact editing step that you find troubling slow? Opening the code block for edit? Making the change? Saving the change?
@modem7 commented on GitHub (Jan 30, 2021):
Heya,
WYSISYG editor in this case.
And to better explain I made a screenshare video:
https://user-images.githubusercontent.com/4349962/106382603-8d425900-63b8-11eb-8d57-89d0d09581d0.mp4
Edited to embed video rather than dropbox.
This is another page with a smaller code block to give a performance difference:
https://user-images.githubusercontent.com/4349962/106382667-06da4700-63b9-11eb-99d7-e8f9cbf6a9cd.mp4
Custom HTML header:
Removing the custom HTML header does not change the loading times.
@ssddanbrown commented on GitHub (Jan 31, 2021):
Thanks for confirming @modem7. Looks like the code editor popup window performs okay, but the main editor is super slow.
Initial Findings
Chrome performance chart, Page editor load, 4x CPU slowdown:
Green parts are CodeMirror which represents most of the code execution time, Can see two major events which consume a lot fo time.
Sequence of events appears as follows:
updateHeightsInViewportcall runs causing massive style/layout shift. Very Heavycm.refresh()call from BookStack WYSIWYG code function runs after timeout, causing re-run of all rendering and layout calculations. Very Heavy AgainCurrent page load timings of that test of about 10-11 seconds.
There's duplication in CodeMirror block rendering here. Both before and after editor styles loaded. Should probably render codemirror on set content, as we're doing, but defer visibility and display of CodeMirror content until after styles loaded. Potentially test with CodeMirror in its own forced rendering layer, if not already, to see if that offers a performance boost.
@ssddanbrown commented on GitHub (Jan 31, 2021):
Chart after improvements
Chrome performance chart, Page editor load, 4x CPU slowdown:
@ssddanbrown commented on GitHub (Jan 31, 2021):
Hi @modem7,
I've now had a dive into this and explored the situation, There's a couple of things at play:
For 1, I have patched the code in
bc1e84325c, as detailed above, to reduce the inefficient duplicated work. This reduced loading down to 60% of the original time from my testing, which may vary depending on device and content.For 2, there's not much I can do within the code based without altering how people's page content displays although you can apply a workaround on your own instance if desired. Limiting the height of code blocks brings massive performance benefits in these situations. You can do this by adding the following to your "Custom HTML Head Content" setting:
That should improve both page viewing and editing performance dramatically.
The fixes for 1. above will be part of the next feature release. Since I've addressed the main BookStack inefficiency ready for next release, and provided a workaround for the remainder of the performance issues, I'll close this off but feel free to comment here still if required.
@modem7 commented on GitHub (Jan 31, 2021):
Thank you very much! I'll apply the workaround and wait for the rollout!
Appreciate the quick turnaround on this, thanks again!