2017-01-30 34 views
0

我使用蜻蜓在飞行中生成大拇指,但我注意到它们是在每个单页上重新生成时生成的,这并不好。阅读蜻蜓文档,我看到它的建议添加rack-cache宝石,但是对于创业板的文件说:蜻蜓上飞大拇指,服务器端缓存?

农产品的新鲜度(过期,缓存控制)和/或验证(的Last-Modified,ETag的)

所以,这依赖于客户端中的缓存,这对我来说是无意义的。如果我有数千次访问,我不想为每一个产生拇指,只依靠每个人都有一个缓存副本的事实。

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

回答

1

你是正确的,只是发送ETags和缓存控制标头到客户端只会稍微有用。

什么the author is talking about使用像充当客户和你的Rails应用程序之间的中间人SquidVarnishRack::Cache反向代理 - 所以当客户端请求/my/stored/image/300x300.jpg反向代理将简单地静态地服务于资产没有要求过打您的Rails应用程序(除非缓存陈旧)。

您可以设置蜻蜓使用文件存储 - 但它会比一个反向代理较少高性能:

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'    
+0

我有,但它不存储缩略图。只有原始上传的文件可以将生成的缩略图文件放置在公共文件夹中,以避免在每个页面上生成文件? –