2

我有一个网站将使用 url2png.com 生成屏幕截图。我不喜欢每 30 天需要重新渲染所有屏幕截图的事实,计入您的限制。

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

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

  1. 如何让它们进入某种队列,直到图像渲染并返回(我之前使用过 redis/resque/resque_pool 但这很复杂,我不愿意在这个应用程序上采用非常复杂的路线,因为我认为它会被很多人使用。我更喜欢更简单的东西,不容易搞砸)

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

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

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

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

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

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

4

1 回答 1

5

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

跟踪每个请求并轮询状态的系统可能是矫枉过正。如果您正在寻找一份背景工作,那就另当别论了。

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

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

有一个类似的 apache 模块称为“mod_disk_cache”。ymmv。 http://httpd.apache.org/docs/2.2/mod/mod_disk_cache.html

它是如何工作的:你的应用程序会请求

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

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

于 2012-05-22T03:23:04.917 回答