Two massive performance improvements for large sites (#6730)

Merge pull request 6730
This commit is contained in:
Parker Moore 2018-01-31 15:32:51 -05:00 committed by jekyllbot
parent 138a12c481
commit b4985d1e63
4 changed files with 15 additions and 9 deletions

View File

@ -358,7 +358,7 @@ module Jekyll
#
# Returns an Array of related Posts.
def related_posts
Jekyll::RelatedPosts.new(self).build
@related_posts ||= Jekyll::RelatedPosts.new(self).build
end
# Override of normal respond_to? to match method_missing's logic for

View File

@ -37,6 +37,16 @@ module Jekyll
@site_collections ||= @obj.collections.values.sort_by(&:label).map(&:to_liquid)
end
# `{{ site.related_posts }}` is how posts can get posts related to
# them, either through LSI if it's enabled, or through the most
# recent posts.
# We should remove this in 4.0 and switch to `{{ post.related_posts }}`.
def related_posts
return nil unless @current_document.is_a?(Jekyll::Document)
@current_document.related_posts
end
attr_writer :current_document
# return nil for `{{ site.config }}` even if --config was passed via CLI
def config; end

View File

@ -46,7 +46,7 @@ module Jekyll
end
def most_recent_posts
@most_recent_posts ||= (site.posts.docs.reverse - [post]).first(10)
@most_recent_posts ||= (site.posts.docs.last(11).reverse - [post]).first(10)
end
end
end

View File

@ -52,7 +52,7 @@ module Jekyll
Jekyll.logger.debug "Rendering:", document.relative_path
assign_pages!
assign_related_posts!
assign_current_document!
assign_highlighter_options!
assign_layout_data!
@ -217,12 +217,8 @@ module Jekyll
#
# Returns nothing
private
def assign_related_posts!
if document.is_a?(Document) && document.collection.label == "posts"
payload["site"]["related_posts"] = document.related_posts
else
payload["site"]["related_posts"] = nil
end
def assign_current_document!
payload["site"].current_document = document
end
# Set highlighter prefix and suffix