代码之家  ›  专栏  ›  技术社区  ›  stop-error

如何使firebase图像URL缓存,而不必将其放在静态文件夹中?

  •  1
  • stop-error  · 技术社区  · 2 年前

    我在我的react应用程序中有以下逻辑,我使用firestore存储imgae url,我的图像在firestore存储上

    const imgLink = "https://firebasestorage.googleapis.com/somepnglink
    
    <img src={imgLink} />

    我的网络标签图片第二次加载!第一次加载给出200,因为这是图像第一次加载 IMG network tab

    Water fall

    以前,当我将图像存储在react静态文件夹中时,它们会缓存在浏览器内存中,现在我必须等待响应发生,然后加载图像!! 如何让浏览器从firbase stroage缓存我的图像,而不必每次都调用并等待响应,因为我的图像当时无法加载?我能忍受这种明显的负荷。。。 不是问题。 但在那之后,图像应该缓存在浏览器中,所以为什么不立即从那里加载它们,而不必等待对服务器的调用呢?

    1 回复  |  直到 2 年前
        1
  •  2
  •   Dharmaraj    2 年前

    你有 cache-control 请求中的标头?您可以使用指定 cacheControl 上传文件或使用时在对象元数据中 updateMetadata() 函数为现有文件添加。

    没有缓存控制标头:

    enter image description here

    使用“缓存控制”标头:

    enter image description here

    默认情况下,标题将设置为 private, max-age=0 。您可以使用 更新元数据() 如下所示:

    await updateMetadata(storageRef, {
      cacheControl: 'public, max-age=300',
    })
    

    或者,您可以使用 Google Cloud Storage 控制台手动编辑元数据。