蜻蜓大拇指,服务器端缓存?

时间:2017-01-30 11:45:50

标签: ruby-on-rails caching dragonfly-gem

我使用蜻蜓动态生成大拇指,但我注意到它们是在每次重页加载时生成的,这并不好。阅读蜻蜓文档我看到它建议添加rack-cache gem,但该gem的文档说:

  

产生新鲜度(Expires,Cache-Control)和/或验证(Last-Modified,ETag)

所以,这依赖于客户端的缓存,这对我来说是没有意义的。如果我进行了数千次访问,我不想为每个访问生成拇指,而只是依赖于每个访问都有缓存副本的事实。

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

1 个答案:

答案 0 :(得分:1)

你是正确的,只是向客户端发送ETag和缓存控制头只会有一点点用处。

the author is talking about使用反向代理,例如SquidVarnishRack::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'