Ruby on rails 蜻蜓点水,服务器端缓存?

Ruby on rails 蜻蜓点水,服务器端缓存?,ruby-on-rails,caching,dragonfly-gem,Ruby On Rails,Caching,Dragonfly Gem,我使用dragonfly来快速生成拇指,但我注意到它们是在每次页面重新加载时生成的,这并不好。阅读dragonfly文档后,我发现建议添加rack cache gem,但该gem的文档说明: 生产新鲜度过期,缓存控制和/或上次修改的验证,ETag 因此,这依赖于客户机中的缓存,这对我来说毫无意义。如果我有数千次访问,我不想为每一次访问生成拇指,而仅仅依靠每个访问都有一个缓存副本这一事实 我想在服务器端实现某种缓存,并避免DragonFly在具有该维度的文件已经存在的情况下再次生成它。您是正确的,

我使用dragonfly来快速生成拇指,但我注意到它们是在每次页面重新加载时生成的,这并不好。阅读dragonfly文档后,我发现建议添加rack cache gem,但该gem的文档说明:

生产新鲜度过期,缓存控制和/或上次修改的验证,ETag

因此,这依赖于客户机中的缓存,这对我来说毫无意义。如果我有数千次访问,我不想为每一次访问生成拇指,而仅仅依靠每个访问都有一个缓存副本这一事实


我想在服务器端实现某种缓存,并避免DragonFly在具有该维度的文件已经存在的情况下再次生成它。

您是正确的,只需将ETag和缓存控制头发送到客户端就没有多大用处了

什么是使用Squid、Varnish或Rack::Cache等反向代理,它们充当客户机和rails应用程序之间的中间人-因此,当客户机请求/my/stored/image/300x300.jpg时,反向代理只需静态地为资产提供服务,而不会让请求击中您的rails应用程序,除非缓存过时

您可以将Dragonfly设置为使用文件存储,但其性能不如反向代理:

datastore :file,
  # directory under which to store files
  root_path: 'public/dragonfly',    
  # - defaults to 'dragonfly' relative to current dir
  # root for urls when serving directly from datastore using remote_url
  server_root: 'public'             

我有,但它不储存缩略图。只有原始上传的文件,才能将生成的缩略图文件放在公用文件夹中,以避免在每次页面加载时生成?