mirror of
https://github.com/moebooru/moebooru
synced 2025-08-22 01:47:48 +00:00
branch : moe extra : convert_revision : svn%3A2d28d66d-8d94-df11-8c86-00306ef368cb/trunk/moe%405
41 lines
1.2 KiB
Ruby
41 lines
1.2 KiB
Ruby
module CacheHelper
|
|
def build_cache_key(base, tags, page, limit, options = {})
|
|
page = page.to_i
|
|
page = 1 if page < 1
|
|
tags = tags.to_s.downcase.scan(/\S+/).sort
|
|
|
|
if options[:user]
|
|
user_level = options[:user].level
|
|
user_level = CONFIG["user_levels"]["Member"] if user_level < CONFIG["user_levels"]["Member"]
|
|
else
|
|
user_level = "?"
|
|
end
|
|
|
|
if tags.empty? || tags.any? {|x| x =~ /(?:^-|[*:])/}
|
|
version = Cache.get("$cache_version").to_i
|
|
tags = tags.join(",")
|
|
else
|
|
version = "?"
|
|
tags = tags.map {|x| x + ":" + Cache.get("tag:#{x}").to_i.to_s}.join(",")
|
|
end
|
|
|
|
["#{base}/v=#{version}&t=#{tags}&p=#{page}&ul=#{user_level}&l=#{limit}", 0]
|
|
end
|
|
|
|
def get_cache_key(controller_name, action_name, params, options = {})
|
|
case "#{controller_name}/#{action_name}"
|
|
when "post/index"
|
|
build_cache_key("p/i", params[:tags], params[:page], params[:limit], options)
|
|
|
|
when "post/atom"
|
|
build_cache_key("p/a", params[:tags], 1, "", options)
|
|
|
|
when "post/piclens"
|
|
build_cache_key("p/p", params[:tags], params[:page], params[:limit], options)
|
|
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
end
|