【问题标题】:App Engine Image Service Link Stopped Working (HTTP 404)App Engine 图像服务链接停止工作 (HTTP 404)
【发布时间】:2016-05-06 09:11:24
【问题描述】:

我们将图像存储在 Google Cloud Storage 中。我们使用图像服务 getServingUrl() 生成了一个链接。该链接工作了一段时间(几个小时),然后停止工作。我们收到报告称,该链接在美国仍可访问,但在英国无法访问。

这是链接:http://lh3.googleusercontent.com/HkwzeUinidFxi-z6OO4ANasEuVYZYduhMiPG2SraKstC5Val0xGdTqvePNMr_bs7FLvj1oNzZjSWZe4dKcugaZ5hzaqfWlw=s36

还有其他人遇到过这个问题吗?如果有,有没有人给他们开罚单去调查?

【问题讨论】:

  • 我确认可以在美国看到该图像。此外,当我告诉我的浏览器模拟伦敦坐标时,图像也会显示出来。
  • 使用 PHP 而不是 java 你可以参考这篇文章stackoverflow.com/questions/37646849/…

标签: google-app-engine


【解决方案1】:

这是多年来的一种已知行为。 getServingUrl() 会生成一个指向 CDN 的临时链接,该链接不能保证永远存在。

您必须在每个请求或不时生成链接或使用其他解决方案。

我们最终将图像从 Amazon 移至 S3 + CloudFront。可以考虑https://cloud.google.com/storage/&https://cloud.google.com/cdn/

【讨论】:

  • 感谢亚历山大提供的信息。但是,最近仍然感觉有些东西发生了变化/损坏 - 我相信,我们一直依赖这些链接稳定几个月,现在已经有几年了。
  • 搬出去后可能稳定了一段时间。当 AppEngine 处于起步阶段并且在数据中心级别有很多停机时间时,我们就开始了。我的理解(猜测)存储它的服务 URL 参考 - 数据中心 ID(甚至可能是机器 ID)在其中编码,因此如果数据中心或机架或服务器出现问题,它根本不可能服务。如果您需要可靠性,则必须使用可以复制数据的东西。
  • 再次感谢您的想法,亚历山大。我假设 Google Cloud Storage 提供了冗余的复制存储,并且图像服务生成 URL 并存储元数据,它指向 Google Cloud Storage 中的正确位置。我猜数据被吸入 CDN 并且缓存未命中,即它已被驱逐,它将再次使用元数据重新加载。
  • 和你一样,不过我完全是在猜测。我在 Google 的文档中没有看到任何解释该链接将过期的内容,而另一个线程似乎表明它不会:stackoverflow.com/questions/4643892/…
  • 我认为你是对的,但它对我们不起作用,似乎对你不起作用。如果您收到 Google 的任何回复,请更新该主题。
【解决方案2】:

服务网址不会过期。我有一个包含大约 500k 图像的网站,它使用相同的图像 URL 已有大约 4 年了。所有图片链接仍然有效,并且只生成一次(不是每次请求)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-16
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多