From ea45da0dbd56f69c3d26bcb58dfedf0a665af523 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Mon, 19 Aug 2024 16:41:15 -0500 Subject: [PATCH] index: cache featured sites, fixes signup issues --- app/index.rb | 54 +++++++++++++++++++++++++++++++++++++++---------- views/index.erb | 12 ++++++----- 2 files changed, 50 insertions(+), 16 deletions(-) diff --git a/app/index.rb b/app/index.rb index c1a1c4eb..679201cc 100644 --- a/app/index.rb +++ b/app/index.rb @@ -28,11 +28,37 @@ get '/?' do halt erb :'home', locals: {site: current_site} end - if SimpleCache.expired?(:index) - @sites_count = Site.count.roundup(100) - @total_hits_count = DB['SELECT SUM(hits) AS hits FROM SITES'].first[:hits] || 0 - @total_views_count = DB['SELECT SUM(views) AS views FROM SITES'].first[:views] || 0 - @changed_count = DB['SELECT SUM(changed_count) AS changed_count FROM SITES'].first[:changed_count] || 0 + if SimpleCache.expired?(:sites_count) + @sites_count = SimpleCache.store :sites_count, Site.count.roundup(100), 4.hours + else + @sites_count = SimpleCache.get :sites_count + end + + if SimpleCache.expired?(:total_hits_count) + @total_hits_count = SimpleCache.store :total_hits_count, DB['SELECT SUM(hits) AS hits FROM SITES'].first[:hits], 4.hours + else + @total_hits_count = SimpleCache.get :total_hits_count + end + + @total_hits_count ||= 0 + + if SimpleCache.expired?(:total_views_count) + @total_views_count = SimpleCache.store :total_views_count, DB['SELECT SUM(views) AS views FROM SITES'].first[:views], 4.hours + else + @total_views_count = SimpleCache.get :total_views_count + end + + @total_views_count ||= 0 + + if SimpleCache.expired?(:changed_count) + @changed_count = SimpleCache.store :changed_count, DB['SELECT SUM(changed_count) AS changed_count FROM SITES'].first[:changed_count], 4.hours + else + @changed_count = SimpleCache.get :changed_count + end + + @changed_count ||= 0 + + if SimpleCache.expired?(:blog_feed_html) @blog_feed_html = '' begin @@ -45,15 +71,21 @@ get '/?' do @blog_feed_html = 'The latest news on Neocities can be found on our blog.' end - @create_disabled = false - - @index_rendered = SimpleCache.store :index, erb(:index, layout: :index_layout), (ENV['RACK_ENV'] == 'test' ? -1 : 1.hour) + @blog_feed_html = SimpleCache.store :blog_feed_html, @blog_feed_html, 8.hours else - @index_rendered = SimpleCache.get(:index) + @blog_feed_html = SimpleCache.get :blog_feed_html end - @index_rendered.gsub! 'CSRF_TOKEN_HERE', csrf_token - @index_rendered + if SimpleCache.expired?(:featured_sites) + @featured_sites = Site.order(:score.desc).limit(12).all.shuffle.collect {|s| {screenshot_url: s.screenshot_url('index.html', '540x405'), uri: s.uri, title: s.title}} + SimpleCache.store :featured_sites, @featured_sites, 1.hour + else + @featured_sites = SimpleCache.get :featured_sites + end + + @create_disabled = false + + erb :index, layout: :index_layout end get '/welcome' do diff --git a/views/index.erb b/views/index.erb index 4dbea8a9..a8f270eb 100644 --- a/views/index.erb +++ b/views/index.erb @@ -32,6 +32,8 @@ + <%== flash_display centered: true %> + <% else %>
- +

Sign up for free

@@ -162,10 +164,10 @@ -->