Merge branch 'perf-wiki-pattern-once' into 'master'
Improve render performance of large wiki pages See merge request gitlab-org/gitlab-ce!20465
This commit is contained in:
commit
bbd59176f8
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Improve render performance of large wiki pages
|
||||
merge_request: 20465
|
||||
author: Peter Leitzen
|
||||
type: performance
|
|
@ -100,6 +100,11 @@ module Banzai
|
|||
ref_pattern = object_class.reference_pattern
|
||||
link_pattern = object_class.link_reference_pattern
|
||||
|
||||
# Compile often used regexps only once outside of the loop
|
||||
ref_pattern_anchor = /\A#{ref_pattern}\z/
|
||||
link_pattern_start = /\A#{link_pattern}/
|
||||
link_pattern_anchor = /\A#{link_pattern}\z/
|
||||
|
||||
nodes.each do |node|
|
||||
if text_node?(node) && ref_pattern
|
||||
replace_text_when_pattern_matches(node, ref_pattern) do |content|
|
||||
|
@ -108,7 +113,7 @@ module Banzai
|
|||
|
||||
elsif element_node?(node)
|
||||
yield_valid_link(node) do |link, inner_html|
|
||||
if ref_pattern && link =~ /\A#{ref_pattern}\z/
|
||||
if ref_pattern && link =~ ref_pattern_anchor
|
||||
replace_link_node_with_href(node, link) do
|
||||
object_link_filter(link, ref_pattern, link_content: inner_html)
|
||||
end
|
||||
|
@ -118,7 +123,7 @@ module Banzai
|
|||
|
||||
next unless link_pattern
|
||||
|
||||
if link == inner_html && inner_html =~ /\A#{link_pattern}/
|
||||
if link == inner_html && inner_html =~ link_pattern_start
|
||||
replace_link_node_with_text(node, link) do
|
||||
object_link_filter(inner_html, link_pattern, link_reference: true)
|
||||
end
|
||||
|
@ -126,7 +131,7 @@ module Banzai
|
|||
next
|
||||
end
|
||||
|
||||
if link =~ /\A#{link_pattern}\z/
|
||||
if link =~ link_pattern_anchor
|
||||
replace_link_node_with_href(node, link) do
|
||||
object_link_filter(link, link_pattern, link_content: inner_html, link_reference: true)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue