使用url2png将截图保存到自己的服务器的最佳方法?

Tal*_*boy 2 ruby ruby-on-rails image ruby-on-rails-3 ruby-on-rails-3.1

我有一个网站,它将使用url2png.com生成屏幕截图.我不喜欢这样一个事实:它需要每30天重新渲染一次你的截图,并计入你的限制.

理想情况下,我想生成它们,当它完成时,我想将它保存到我自己的服务器,然后在那里查看它.

我想我甚至不确定从哪里开始,特别是......

  1. 如何让他们进入某种队列,这种队列将继续工作,直到渲染和返回图像为止(之前我使用过redis/resque/resque_pool,但这非常复杂,我觉得在这个应用程序上采用非常复杂的路径是不舒服的,因为我认为它会被很多人使用.我喜欢更简单的东西,而不是那么容易搞砸了)

  2. 如何从rails实际获取图像

  3. 如何将图像存储到具有特定文件名的特定目录

  4. 如何在我的实际应用程序中引用资产

  5. 如何处理模型/控制器视图中的屏幕截图.它应该只是一个额外的属性分配给资源,像Resource.screenshot_url?

他们确实提供了一个Ruby宝石,但我不相信我会使用它,因为它唯一的选择是从他们的服务器获取图像,而不是我将使用他们的URL格式来获取图像,然后以某种方式生成我自己的网址.

http://api.url2png.com/v3/<API_KEY>/<TOKEN>/<BOUNDING-BOX>/<URL>

小智 5

URL2PNG api相当快,新请求立即处理,通常在10秒或更短时间内返回png.

跟踪每个请求和轮询状态的系统可能有点过分.如果您正在寻找后台工作,那就是另一回事了.

部件2,3,4和5将由回形针宝石轻松处理.我建议从这里开始:通过paperclip从URL保存图像

我首选的解决方案是缓存反向代理. https://serverfault.com/questions/30705/how-to-set-up-nginx-as-a-caching-reverse-proxy

有一个类似的apache模块叫做"mod_disk_cache".因人而异. http://httpd.apache.org/docs/2.2/mod/mod_disk_cache.html

工作原理:您的应用会向我们发出请求

http://url2png.yourdomain.com/v3/<API_KEY>/<TOKEN>/<BOUNDING-BOX>/<URL>
Run Code Online (Sandbox Code Playgroud)

代理将检查请求是否在缓存中.如果未找到,请求将转发到url2png.com服务器.