From 565a535d22f16d230d2048aa7e6d9ed1cd2b8fe4 Mon Sep 17 00:00:00 2001 From: Leeingnyo Date: Mon, 6 Sep 2021 02:23:02 +0900 Subject: [PATCH] Remove caching verbosely, add cached_cover_url --- src/library/cache.cr | 21 +-------------------- src/library/entry.cr | 3 --- src/library/title.cr | 10 ++++------ src/library/types.cr | 4 ---- src/util/web.cr | 1 - 5 files changed, 5 insertions(+), 34 deletions(-) diff --git a/src/library/cache.cr b/src/library/cache.cr index 612345c..5d3797e 100644 --- a/src/library/cache.cr +++ b/src/library/cache.cr @@ -70,21 +70,6 @@ class SortedEntriesCacheEntry < CacheEntry(Array(String), Array(Entry)) end end -class SortOptionsCacheEntry < CacheEntry(Tuple(String, Bool), SortOptions) - def self.to_save_t(value : SortOptions) - value.to_tuple - end - - def self.to_return_t(value : Tuple(String, Bool)) - SortOptions.from_tuple value - end - - def instance_size - instance_sizeof(SortOptionsCacheEntry) + - @value[0].instance_size - end -end - class String def instance_size instance_sizeof(String) + bytesize @@ -105,18 +90,14 @@ struct Tuple(*T) end end -alias CacheableType = Array(Entry) | String | Tuple(String, Int32) | - SortOptions +alias CacheableType = Array(Entry) | String | Tuple(String, Int32) alias CacheEntryType = SortedEntriesCacheEntry | - SortOptionsCacheEntry | CacheEntry(String, String) | CacheEntry(Tuple(String, Int32), Tuple(String, Int32)) def generate_cache_entry(key : String, value : CacheableType) if value.is_a? Array(Entry) SortedEntriesCacheEntry.new key, value - elsif value.is_a? SortOptions - SortOptionsCacheEntry.new key, value else CacheEntry(typeof(value), typeof(value)).new key, value end diff --git a/src/library/entry.cr b/src/library/entry.cr index 2c1ae34..28b7122 100644 --- a/src/library/entry.cr +++ b/src/library/entry.cr @@ -81,8 +81,6 @@ class Entry def cover_url return "#{Config.current.base_url}img/icon.png" if @err_msg - cached_cover_url = LRUCache.get "#{@id}:cover_url" - return cached_cover_url if cached_cover_url.is_a? String unless @book.entry_cover_url_cache TitleInfo.new @book.dir do |info| @@ -98,7 +96,6 @@ class Entry url = File.join Config.current.base_url, info_url end end - LRUCache.set generate_cache_entry "#{@id}:cover_url", url url end diff --git a/src/library/title.cr b/src/library/title.cr index 8333642..8d97387 100644 --- a/src/library/title.cr +++ b/src/library/title.cr @@ -11,6 +11,7 @@ class Title @entry_display_name_cache : Hash(String, String)? @entry_cover_url_cache : Hash(String, String)? @cached_display_name : String? + @cached_cover_url : String? def initialize(@dir : String, @parent_id) storage = Storage.default @@ -230,8 +231,8 @@ class Title end def cover_url - cached_cover_url = LRUCache.get "#{@id}:cover_url" - return cached_cover_url if cached_cover_url.is_a? String + cached_cover_url = @cached_cover_url + return cached_cover_url unless cached_cover_url.nil? url = "#{Config.current.base_url}img/icon.png" readable_entries = @entries.select &.err_msg.nil? @@ -244,12 +245,11 @@ class Title url = File.join Config.current.base_url, info_url end end - LRUCache.set generate_cache_entry "#{@id}:cover_url", url + @cached_cover_url = url url end def set_cover_url(url : String) - LRUCache.invalidate "#{@id}:cover_url" TitleInfo.new @dir do |info| info.cover_url = url info.save @@ -257,8 +257,6 @@ class Title end def set_cover_url(entry_name : String, url : String) - selected_entry = @entries.find { |entry| entry.display_name == entry_name } - LRUCache.invalidate "#{selected_entry.id}:cover_url" if selected_entry TitleInfo.new @dir do |info| info.entry_cover_url[entry_name] = url info.save diff --git a/src/library/types.cr b/src/library/types.cr index 46d2a7c..a4de007 100644 --- a/src/library/types.cr +++ b/src/library/types.cr @@ -35,16 +35,12 @@ class SortOptions end def self.from_info_json(dir, username) - key = "#{dir}:#{username}:sort_opt" - cached_opt = LRUCache.get key - return cached_opt if cached_opt.is_a? SortOptions opt = SortOptions.new TitleInfo.new dir do |info| if info.sort_by.has_key? username opt = SortOptions.from_tuple info.sort_by[username] end end - LRUCache.set generate_cache_entry key, opt opt end diff --git a/src/util/web.cr b/src/util/web.cr index 9b967da..1b3a42c 100644 --- a/src/util/web.cr +++ b/src/util/web.cr @@ -121,7 +121,6 @@ macro get_and_save_sort_opt(dir) sort_opt = SortOptions.new sort_method, is_ascending key = "#{{{dir}}}:#{username}:sort_opt" - LRUCache.set generate_cache_entry key, sort_opt TitleInfo.new {{dir}} do |info| info.sort_by[username] = sort_opt.to_tuple info.save