我一直在研究 rails 文件上传工具,对我来说似乎最吸引人和最有趣的是carrierwave 和dragonfly。
环顾四周,carrierwave 似乎采用了更传统的风格,您可以在保存时处理文件,而蜻蜓是中间件,因此它允许您即时处理。
我想知道人们是否对性能测试或任何比较两者的测试有任何参考。
此外,只是好奇人们对两者的看法,他们更喜欢哪一种,当然还有他们为什么喜欢它。
我一直在研究 rails 文件上传工具,对我来说似乎最吸引人和最有趣的是carrierwave 和dragonfly。
环顾四周,carrierwave 似乎采用了更传统的风格,您可以在保存时处理文件,而蜻蜓是中间件,因此它允许您即时处理。
我想知道人们是否对性能测试或任何比较两者的测试有任何参考。
此外,只是好奇人们对两者的看法,他们更喜欢哪一种,当然还有他们为什么喜欢它。
取决于设置。正如 Senthil 所写,只要您在前面有一个缓存代理,就可以使用 Dragonfly。
但是如果你使用内置的 Rails 缓存,Carrierwave 的性能会更好,因为文件可以在没有任何处理的情况下加载。如果你不做任何处理,那也没关系。
以下是我在使用 Mongoapper 的项目中同时考虑图像时的总结:
载波:
蜻蜓:
我最终都使用了。
未来的愿望是让carrierwave 再次支持MongoMapper。在各种情况下使用两者后,我发现 MongoMapper(rails3 分支)中的功能始终有效,并且易于使用插件进行扩展。目前还不能对 Mongoid 说同样的话,但这可能会改变。
我使用蜻蜓只是因为carrierwave放弃了对mongomapper的支持,而回形针在没有一些黑客攻击的情况下无法使用mongomapper。
蜻蜓在飞行中进行处理,即
旨在用于缓存代理(如 Varnish、Squid 或 Rack::Cache)之后,这样虽然第一个请求可能需要一些时间,但后续请求应该非常快!
Paperclip 旨在作为 Active Record 的简单文件附件库。它背后的目的是使设置尽可能简单,并尽可能像对待其他属性一样对待文件。这意味着它们不会被保存到磁盘上的最终位置,如果设置为 nil,它们也不会被删除,直到ActiveRecord::Base#save
被调用。如果需要,它会根据大小和存在来管理验证。如果需要,它可以将其分配的图像转换为缩略图,并且先决条件就像安装 ImageMagick 一样简单(对于大多数基于 Unix 的现代系统来说,它就像安装正确的软件包一样简单)。附加文件被保存到文件系统,并通过易于理解的规范在浏览器中引用,该规范具有合理且有用的默认值。
@user.avatar = nil @user.save
这个 gem 提供了一种从 Ruby 应用程序上传文件的简单且极其灵活的方法。它适用于基于 Rack 的 Web 应用程序,例如 Ruby on Rails。
image
属性以引用上传的图像。image_tag @product.image.thumb('150x150#')
可能。rack::cache
或类似服务器,则每次请求都会占用 CPU。其他人写了很好的总结,我只想说,根据我们的经验,Dragonfly 设置需要更多维护,并且由于一些开发人员的疏忽,我们也被困在原始图像之后徘徊的大量孤立图像去掉了。普通载波不会发生这种情况。PS我们迁移到cloudinary(并使用carrierwave)并且对它很满意。