我试图使用带有集合的缓存(使用多个解决方案)问题是,当我尝试缓存响应变慢时,请考虑下面的集合示例,为其中的每个项目呈现2个部分(大约25个项目)
json.data do
json.array! @organizations do |organization|
json.partial! 'api/v1/organizations/organization', organization: organization
json.partial! 'api/v1/organizations/links', organization: organization
end
end
Run Code Online (Sandbox Code Playgroud)
没有缓存,平均响应时间约为38毫秒(平均)
现在有了缓存
json.data do
json.array! @organizations do |organization|
json.cache! organization do
json.partial! 'api/v1/organizations/organization', organization: organization
json.partial! 'api/v1/organizations/links', organization: organization
end
end
end
Run Code Online (Sandbox Code Playgroud)
使用jbuilder默认缓存和dalli存储已正确安装和配置(我可以验证没有缓存未命中)
平均响应约为59毫秒(平均)
使用Cache Digest上的语法
json.data do
json.cache! @organizations do
json.partial! 'api/v1/organizations/organization', collection: @organizations, as: :organization
json.partial! 'api/v1/organizations/links', collection: @organizations, as: :organization
end
end
Run Code Online (Sandbox Code Playgroud)
平均响应时间约为41毫秒(平均),响应时间与其他响应不同
# Instead of getting
[{ data:{}, links:{} }, {{ data:{}, links:{} }]
# I get …Run Code Online (Sandbox Code Playgroud) memcached caching jbuilder ruby-on-rails-4 ruby-on-rails-4.2