【问题标题】:User uploaded images on google app engine?用户在谷歌应用引擎上传图片?
【发布时间】:2010-07-24 14:19:46
【问题描述】:

假设您正在为应用引擎创建一个 facebook 风格的应用。您将如何处理用户个人资料图片?

据我所知,您必须将图像存储在数据存储或 Blob 存储中。这意味着每次获取图片都需要通过动态处理程序并使用至少 20 毫秒的 cputime。

有没有一种有效的方法来做到这一点?或者这只是应用引擎目前无法处理的事情?

【问题讨论】:

  • 每个请求使用 20 毫秒 CPU 时间是个大问题吗?这相当于每千个请求 0.0006 美元 - 千分之六美分。
  • @nick 假设您在他们拥有的每个状态更新旁边都放了一张他们照片的缩略图。然后在您看到朋友更新的主页上,您会看到 20 个不同的缩略图。这意味着每个页面视图都需要 20 次往返数据存储或内存缓存......而 20 毫秒的 cpu 时间是最好的情况,平均值会高得多(code.google.com/status/appengine/detail/datastore/2010/07/…)。每次页面查看 20 次数据存储往返似乎是不可行的......
  • 第一次网页浏览需要 20 次往返 - 但您应该发送缓存标头,以便用户的浏览器缓存缩略图。如果您也使用 blobstore,则不需要数据存储往返。此外,与对服务器端的计费影响相比,您至少应该担心向每个页面添加 20 个额外图像对用户体验和延迟造成的影响。

标签: google-app-engine


【解决方案1】:

让我们比较几个不同的选项:

Google App Engine:

  • 每 CPU 小时 0.10 USD
  • 每 GB 传出带宽 0.12 美元

Google Storage for Developers:

  • 每 10,000 个 GET 请求 0.01 USD
  • 美洲和欧洲、中东和非洲地区每 GB 下载 0.15 美元

Amazon S3:

  • 每 10,000 个 GET 请求 0.01 USD
  • 每 GB 0.15 美元,最多 10 TB/月的数据传出

假设您要提供 1000 万张图片,每张 50KB。

在 App Engine 上,每个请求使用 20 毫秒的动态处理程序,这将花费您 57.22 美元的传出带宽和 5.55 美元的 CPU 时间。在 Google Storage 或 S3 上,您需要为传出带宽支付 71.52 美元,外加 10 美元的 GET 费用。

因此,基本上,如果您的处理程序使用的 CPU 时间少于 36 毫秒,那么在 App Engine 上比在专门为此目的设计的服务上便宜。请有人仔细检查我的数学。 =)

【讨论】:

    【解决方案2】:

    您不再有此问题,因为get_serving_url() 不使用您的任何 CPU 配额(仅传出带宽和存储空间)。此外,它还让您免费缩放和裁剪。

    【讨论】:

      【解决方案3】:

      并在内存缓存中缓存最近使用的图像。这几乎是平台所能提供的全部内容。

      GAE 是为其构建的应用程序类别的一个很好的工具。克隆 Flickr 超出了它的设计意图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-18
        • 2015-07-14
        • 2012-06-09
        • 2012-05-01
        • 2014-10-15
        • 1970-01-01
        • 2023-03-25
        • 2015-06-06
        相关资源
        最近更新 更多