Two massive performance improvements for large sites (#6730)
Merge pull request 6730
This commit is contained in:
		
							parent
							
								
									138a12c481
								
							
						
					
					
						commit
						b4985d1e63
					
				|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue