当前位置: 首页 > 知识库问答 >
问题:

来自Google云存储的Express缓存图像流

翟迪
2023-03-14
app.get('/v1/images/:Uid/', function(req, res) {
    var gcsbucket = gcs.bucket('bucket'),
    remoteReadStream = gcsbucket.file(req.params.Uid+'.jpg').createReadStream();
    remoteReadStream.pipe(res);
});
res.set('Cache-Control', 'public, max-age=31557600');

共有1个答案

尚宏硕
2023-03-14

这实际上是有效的:

app.get('/v1/images/:Uid/', function(req, res) {
    var gcsbucket = gcs.bucket('bucket'),
    remoteReadStream = gcsbucket.file(req.params.Uid+'.jpg').createReadStream();
    res.set('Cache-Control', 'public, max-age=31557600');
    remoteReadStream.pipe(res);
});

奇怪的是,当您直接访问API时,浏览器从不缓存。但是,当您将图像嵌入到html页面中时,图像将被缓存,如下所示:

<img src="http://server/v1/images/1234">

对于我的用例来说已经足够了,但是如果有人有原因呢?

 类似资料:
  • 这是可行的,但这里的问题是,在流回此方法的客户端之前,它必须首先缓冲所有字节。这会导致很多延迟,尤其是当存储在GCS中的文件很大时。 是否有一种方法可以从GCS获取文件并将其直接流到OutputStream,这里的OutputStream是针对servlet的。

  • 我目前正在一个在Appengine标准环境下运行flask的项目中工作,我试图提供一个已经上传到我项目默认Appengine存储桶中的Google云存储的图像。 这是我目前拥有的路由代码: 实际上,我试图提供一个图像,我已经上传到我的app engine项目中的默认云存储桶中。 我还尝试使用以下代码为映像提供服务,但没有成功:

  • 我有一个存储图像的存储桶,当我使用图像的公共URL检索图像时,它会在浏览器中下载图像,而不是在浏览器中显示图像,我如何查看图像而不是下载图像。我为上传的图片使用以下URL。 https://www.googleapis.com/download/storage/v1/b/image-downloader-bucket/o/a06266f6-6082-468e-92ca-f918a48533a8?g

  • 我的网站文件托管在Google Cloud Storage,每次我更新一个文件(比如。png或。xml)时,我总是要等一段时间才能看到新文件出现在我的页面上。 有没有办法覆盖单个对象的默认缓存设置(max-age=3600)?尝试用“no store”、“no cache”、“max-age=0”编辑“cache-control”元数据,但它们似乎都不起作用,仍然在响应头中获得“cache-con

  • 我正在运行基于Firebase实时数据库和Firebase Storage的网络应用程序。 我需要通过Python google云存储库每小时将新图像上传到Firebase google bucket。这是文件。 我的图片上传代码(img_src路径正确): 图像似乎已成功上传,但在Firebase存储中手动查看时,图像不会加载。所有图像的规格看起来都是正确的。请将手动上传图像(加载良好)的规格与

  • 谷歌云存储中的文件更改需要多长时间才能传播? 我遇到了一个非常令人沮丧的问题,我改变了一个文件的内容,并通过gsutil重新上传,但是这个改变几个小时后才显示出来。有没有办法强制一个改变的文件立即传播所有内容? 如果我查看谷歌云存储控制台中的文件,它会看到新文件,但如果我点击公共网址,它是旧版本,在某些情况下,是2个版本前的版本。 有没有我没有设置的标题? 编辑: 我尝试了,但它没有帮助,但也许旧