【问题标题】:GAE still serving image from google cloud storage after calling delete_serving_url and deleting file调用 delete_serving_url 并删除文件后,GAE 仍从谷歌云存储提供图像
【发布时间】:2014-06-29 23:48:14
【问题描述】:

目前提供图片的流程如下:

  1. 在谷歌云存储上存储图片
  2. 获取 blob_key:google.appengine.ext.blobstore.create_gs_key(filename)
  3. 获取网址:google.appengine.api.images.get_serving_url(blob_key,size=250,secure_url=True)

在检索 blob_key 后删除图像:

  1. 删除服务网址: google.appengine.api.images.delete_serving_url(blob_key)
  2. 删除谷歌云存储文件:'cloudstorage.delete(filename)'

问题

问题在于,即使底层图像不再存在于谷歌云存储中,该 url 的服务时间仍不确定。大多数情况下,该 url 在约 24 小时内返回 404,但也看到 1 张图片现在仍在投放(约 2 周)。

delete_serving_url 呼叫的及时性有何期望?有什么方法可以更快地删除 url?

【问题讨论】:

  • 你是否在对象上设置了 Cache-Control 标头?
  • 我正在使用 GCS 客户端库函数 (gcs.open) 创建对象 link,但无法指定 Cache-Control。支持吗?
  • 我的错误,使用选项为x-goog-cache-control,而它需要cache-control。然而,当使用cloudstorage.open(filename, 'w',content_type=mimetype,options={'cache-control':'no-cache'}) 创建文件,然后执行上述过程时,该 url 在 1 小时后仍然有效。想法?
  • 有人知道解决方法吗?请分享。

标签: google-app-engine google-cloud-storage blobstore


【解决方案1】:

我可以解决您的两个问题之一。不幸的是,它的帮助较小。 :/

对 delete_serving_url 调用的及时性有何期望?

查看getServingUrl 的 Java 文档,他们清楚地说明预计需要 24 小时,正如您所观察到的那样。我不确定为什么 Python 文档会忽略这一点。

如果您希望停止提供 URL,请删除基础 blob 键。这最多需要 24 小时才能生效。

文档没有解释为什么您的一张图片在 2 周后仍会投放。

还值得注意的是,它们在停止提供 blob 的过程中并未引用 deleteServingUrl。这向我表明,您“删除图像”过程中的步骤 (1) 是不必要的。

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2023-03-26
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多