commit: f93dd2d194eaa5b9b23715edf6b71ecb5001d839 Author: Alex Legler <alex <AT> a3li <DOT> li> AuthorDate: Sun Feb 22 14:44:19 2015 +0000 Commit: Alex Legler <a3li <AT> gentoo <DOT> org> CommitDate: Sun Feb 22 14:44:19 2015 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/ag-web.git;a=commit;h=f93dd2d1
Cache message counts --- ag-web.rb | 3 +++ lib/cache.rb | 35 +++++++++++++++++++++++++++++++++++ lib/index.rb | 2 +- views/index.erb | 4 ++-- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/ag-web.rb b/ag-web.rb index ef326c8..8855dd7 100644 --- a/ag-web.rb +++ b/ag-web.rb @@ -13,6 +13,7 @@ require 'pony' require_relative 'lib/index.rb' require_relative 'lib/helpers.rb' +require_relative 'lib/cache.rb' configure do set :partial_template_engine, :erb @@ -24,6 +25,8 @@ $es.transport.reload_connections! $config = YAML.load_file('config.yml') +MessageCountCache.instance.update! + get '/:list/report/:msgid' do return unless list_check diff --git a/lib/cache.rb b/lib/cache.rb new file mode 100644 index 0000000..c2968d1 --- /dev/null +++ b/lib/cache.rb @@ -0,0 +1,35 @@ +require 'date' + +class MessageCountCache + include Singleton + CACHE_SECONDS = 3600 + + def initialize + update! + end + + def update! + @message_counts ||= {} + + @new_counts = {} + [$config['active_lists'], $config['frozen_lists']].flatten.each do |list| + @new_counts[list] = get_message_count_internal(list) + end + + @message_counts = @new_counts + @load_date = DateTime.now + end + + def [](list) + update? + + @message_counts[list] + end + + private + def update? + if ((DateTime.now - @load_date) * 60 * 60 * 24).to_i > CACHE_SECONDS + update! + end + end +end \ No newline at end of file diff --git a/lib/index.rb b/lib/index.rb index 5690afe..de3d4f0 100644 --- a/lib/index.rb +++ b/lib/index.rb @@ -73,7 +73,7 @@ def get_month_listing(list) ) end -def get_message_count(list) +def get_message_count_internal(list) $es.search( index: 'ml-' + list, size: 1, diff --git a/views/index.erb b/views/index.erb index d1454ea..c2cee2c 100644 --- a/views/index.erb +++ b/views/index.erb @@ -9,7 +9,7 @@ <a href="<%= h list %>/" class="list-group-item"> <span class="fa fa-fw fa-archive"></span> <%= h list %> - <span class="badge"><%= get_message_count(list) %></span> + <span class="badge"><%= MessageCountCache.instance[list] %></span> </a> <% end %> </div> @@ -32,7 +32,7 @@ <a href="<%= h list %>/" class="list-group-item"> <span class="fa fa-fw fa-archive"></span> <%= h list %> - <span class="badge"><%= get_message_count(list) %></span> + <span class="badge"><%= MessageCountCache.instance[list] %></span> </a> <% end %> </div>