蜻蜓飞拇指,服务器端缓存?
Dragonfly on the fly thumbs, server side cache?
我正在使用 dragonfly 即时生成缩略图,但我注意到它们是在每次重新加载单个页面时生成的,这并不好。阅读蜻蜓文档我发现建议添加 rack-cache
gem,但是 gem 的文档说:
produce freshness (Expires, Cache-Control) and/or validation (Last-Modified, ETag)
所以,这依赖于客户端中的缓存,这对我来说是无意义的。如果我有数千次访问,我不想为每个访问生成缩略图,而只是依赖于每个访问都有一个缓存副本这一事实。
我想在服务器端实现某种缓存,避免 DragonFly 在已经存在该尺寸的文件时再次生成它。
您是正确的,因为仅向客户端发送 ETag 和缓存控制 headers 的用处不大。
什么 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'
我正在使用 dragonfly 即时生成缩略图,但我注意到它们是在每次重新加载单个页面时生成的,这并不好。阅读蜻蜓文档我发现建议添加 rack-cache
gem,但是 gem 的文档说:
produce freshness (Expires, Cache-Control) and/or validation (Last-Modified, ETag)
所以,这依赖于客户端中的缓存,这对我来说是无意义的。如果我有数千次访问,我不想为每个访问生成缩略图,而只是依赖于每个访问都有一个缓存副本这一事实。
我想在服务器端实现某种缓存,避免 DragonFly 在已经存在该尺寸的文件时再次生成它。
您是正确的,因为仅向客户端发送 ETag 和缓存控制 headers 的用处不大。
什么 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'