Ruby on rails 即时加载activestorage附件仍会执行额外的查询和元请求

Ruby on rails 即时加载activestorage附件仍会执行额外的查询和元请求,ruby-on-rails,ruby,eager-loading,rails-activestorage,ruby-on-rails-6,Ruby On Rails,Ruby,Eager Loading,Rails Activestorage,Ruby On Rails 6,我使用rails活动存储在页面上加载化身。 化身通过with_连接的助手加载。 这个很好用。对于完整的化身集合,只执行一个sql查询 然而,当我在视图中渲染化身时,会对每个化身执行额外的查询。这使得页面渲染速度非常慢 化身被加载到控制器中 控制器: grouped_step_assignment_profiles=UserProfile.where(user_id:correlated_step_assignments.pull(:user_id))。通过{| x | x.user_id}将{u

我使用rails活动存储在页面上加载化身。 化身通过with_连接的助手加载。 这个很好用。对于完整的化身集合,只执行一个sql查询

然而,当我在视图中渲染化身时,会对每个化身执行额外的查询。这使得页面渲染速度非常慢

化身被加载到控制器中

控制器:
grouped_step_assignment_profiles=UserProfile.where(user_id:correlated_step_assignments.pull(:user_id))。通过{| x | x.user_id}将{u附加在{x | x.user_id}进行分组

然后添加到对象(传递到视图)

avatar:rails\u表示\u url(分组的\u步骤\u分配\u配置文件[user\u id][0]。user\u avatar(30))

UserProfile类中的user_avatar方法:

has_one_attached :avatar
def user_avatar(size = 30)
    if (self&.avatar and self.avatar.attached?)
        self.avatar.variant(resize: "#{size}x#{size}").processed
    else
        if self
            gravatar_image_url(self.email, size: size)
        end
    end
end
在视图中,通过访问对象化身属性来渲染化身:
image\u tag user\u step\u assignment[1][:avatar],class:“圆形圆圈”

这将对每个化身执行以下额外查询和元请求(20个化身是20个额外查询和元请求):

加载页面需要2到3秒(少于20个化身)。当我注释掉视图中的头像行时,页面负载下降到大约200-300毫秒


有人能指出这个设置中的缺陷吗?提前感谢您的帮助

meta_请求可能是由rails面板或更好的_错误引起的,通常仅在开发模式下。我没有看到任何查询(DB),但您正在加载一些图像,它们需要通过应用程序路由,因此您将看到GETrequests@Cremz,非常感谢您指出这一点!这个问题确实是由Rails面板引起的,并没有持续到生产阶段。
Started GET "/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSnJkbUZ5YVdGdWRITXZiMmwyTUdzeGQydG9hWFZ2ZVhnd01USnljR1Z0Tm1Ob2FHMWhhQzlqWTJFMVpUYzNZVEJsWm1ReFlqRmxaRFZpTVdabE1qRmtOelV6TUdJeFl6VTBOek5pTkdFMVpUVTRaalkwTnpjd1lUVmtPR1ZrT0dOaFlXVTNOREUzQmpvR1JWUTZFR1JwYzNCdmMybDBhVzl1U1NKSGFXNXNhVzVsT3lCbWFXeGxibUZ0WlQwaWRHVnRjRjloZG1GMFlYSmZPREVpT3lCbWFXeGxibUZ0WlNvOVZWUkdMVGduSjNSbGJYQmZZWFpoZEdGeVh6Z3hCanNHVkRvUlkyOXVkR1Z1ZEY5MGVYQmxTU0lQYVcxaFoyVXZhbkJsWndZN0JsUT0iLCJleHAiOiIyMDE5LTA5LTI1VDA4OjM5OjU5LjIwOFoiLCJwdXIiOiJibG9iX2tleSJ9fQ==--4462bea946137c25d19bd706d48a0cbc5118c11e/temp_avatar_81?content_type=image%2Fjpeg&disposition=inline%3B+filename%3D%22temp_avatar_81%22%3B+filename%2A%3DUTF-8%27%27temp_avatar_81" for 127.0.0.1 at 2019-09-25 10:37:15 +0200
Processing by ActiveStorage::DiskController#show as HTML
  Parameters: {"content_type"=>"image/jpeg", "disposition"=>"inline; filename=\"temp_avatar_81\"; filename*=UTF-8''temp_avatar_81", "encoded_key"=>"eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDRG9JYTJWNVNTSnJkbUZ5YVdGdWRITXZiMmwyTUdzeGQydG9hWFZ2ZVhnd01USnljR1Z0Tm1Ob2FHMWhhQzlqWTJFMVpUYzNZVEJsWm1ReFlqRmxaRFZpTVdabE1qRmtOelV6TUdJeFl6VTBOek5pTkdFMVpUVTRaalkwTnpjd1lUVmtPR1ZrT0dOaFlXVTNOREUzQmpvR1JWUTZFR1JwYzNCdmMybDBhVzl1U1NKSGFXNXNhVzVsT3lCbWFXeGxibUZ0WlQwaWRHVnRjRjloZG1GMFlYSmZPREVpT3lCbWFXeGxibUZ0WlNvOVZWUkdMVGduSjNSbGJYQmZZWFpoZEdGeVh6Z3hCanNHVkRvUlkyOXVkR1Z1ZEY5MGVYQmxTU0lQYVcxaFoyVXZhbkJsWndZN0JsUT0iLCJleHAiOiIyMDE5LTA5LTI1VDA4OjM5OjU5LjIwOFoiLCJwdXIiOiJibG9iX2tleSJ9fQ==--4462bea946137c25d19bd706d48a0cbc5118c11e", "filename"=>"temp_avatar_81"}
Completed 200 OK in 1ms (ActiveRecord: 0.0ms | Allocations: 1388)
Started GET "/__meta_request/a5c57d1c-bfa3-48c3-ac7e-e0e78fadb997.json" for 127.0.0.1 at 2019-09-25 10:37:21 +0200