我使用蜻蜓动态生成大拇指,但我注意到它们是在每次重页加载时生成的,这并不好。阅读蜻蜓文档我看到它建议添加rack-cache
gem,但该gem的文档说:
产生新鲜度(Expires,Cache-Control)和/或验证(Last-Modified,ETag)
所以,这依赖于客户端的缓存,这对我来说是没有意义的。如果我进行了数千次访问,我不想为每个访问生成拇指,而只是依赖于每个访问都有缓存副本的事实。
我想在服务器端实现某种缓存,如果已存在具有该维度的文件,请避免DragonFly再次生成它。
答案 0 :(得分:1)
你是正确的,只是向客户端发送ETag和缓存控制头只会有一点点用处。
the author is talking about使用反向代理,例如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'