From 4121d6650eeb853ac35040fdc2217d684b9b2947 Mon Sep 17 00:00:00 2001 From: albert Date: Sat, 23 Feb 2013 19:19:47 -0500 Subject: [PATCH] refactor fast_count --- app/models/post.rb | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/app/models/post.rb b/app/models/post.rb index 5fbf64520..42b80e7aa 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -574,7 +574,7 @@ class Post < ActiveRecord::Base def get_count_from_cache(tags) count = Cache.get(count_cache_key(tags)) - if count.nil? && tags.to_s !~ /(?:#{Tag::METATAGS}):/ + if count.nil? count = select_value_sql("SELECT post_count FROM tags WHERE name = ?", tags.to_s) end @@ -584,7 +584,7 @@ class Post < ActiveRecord::Base def set_count_in_cache(tags, count, expiry = nil) if expiry.nil? if count < 100 - expiry = 0 + expiry = 1.minute else expiry = (count * 4).minutes end @@ -602,10 +602,12 @@ class Post < ActiveRecord::Base if tags.blank? && Danbooru.config.blank_tag_search_fast_count count = Danbooru.config.blank_tag_search_fast_count + elsif tags =~ /(?:#{Tag::METATAGS}):/ + fast_count_search(tags) else count = get_count_from_cache(tags) - if count.nil? + if count.nil? || count == 0 count = fast_count_search(tags) end end @@ -619,15 +621,9 @@ class Post < ActiveRecord::Base count = Post.with_timeout(500, Danbooru.config.blank_tag_search_fast_count || 1_000_000) do Post.tag_match(tags).count end - - if count == 0 - count = Post.tag_match(tags).count - end - - if count > Danbooru.config.posts_per_page * 10 + if count > 0 set_count_in_cache(tags, count) end - count end end