具有云功能的 Firebase 托管 - 如何清除/刷新 CDN 缓存?

2024-03-03

我按照该视频中的说明进行操作,到目前为止,一切都运行良好,直到我需要清除 CDN 中的旧 HTML:

https://www.youtube.com/watch?v=7_2CJs_VZk4 https://www.youtube.com/watch?v=7_2CJs_VZk4

到目前为止,我已经使用 Firebase Cloud Functions 创建了一个静态 HTML 页面,并将其存储在 Firebase Cloud Storage 上。每当更新 Firebase 数据库中的数据时,都会呈现一个新的和更新的静态 HTML 页面,并将其保存到云存储中。

Firebase 托管提供该静态 HTML 页面,并存储在 CDN 上。 根据上面的视频,我为 CDN 设置了较长的刷新时间,因为我只希望它在更改 Firebase 数据库中的数据时更新(如果未进行任何更改,则不刷新 CDN)

为此,当页面更新时,必须清除 CDN 上存储的旧 HTML 页面并替换为新的 HTML 页面。

时间 33:19 的视频建议使用以下代码:

const purgeUrl = `${ORIGIN}/${path}`;
await request(purgeUrl, { method: "PURGE" });

不幸的是它似乎不起作用。我可以看到该页面已在 Cloud Storage 上更新,但是当我刷新 URL 时,不会显示新的 HTML 页面。 我可以显示新 HTML 的唯一方法是再次重新部署 firebase 代码(终端 - firebase 部署)。

这是我的代码(在node.js中):

const ORIGIN = "examplesite-30ccf.firebaseapp.com/";

function getFacts(){
  return database.ref('/web app/test').once('value').then(snap =>snap.val());
}

exports.updateHomePage = functions.database.ref('/web app/test')
.onWrite((snap, context) => {

  return getFacts()
  .then(result1 => {
    console.log("result1", result1);
      return bucket
      .file('public_html/index.html')
      .save(HomePage(result1), {
        gzip: true,
        metadata: {
          contentType: "text/html; charset=utf-8",
          cacheControl: "max-age=300, s-maxage=31536000" // indef CDN cache since we purge manually
        }
      }); 
  }).then(doNotUse => {

    const purgeUrl = `${ORIGIN}`;
    console.log("purged URL", purgeUrl);
    return request(purgeUrl, { method: "PURGE" });
}).catch(error => {
      // Handle errors of asyncFunc1() and asyncFunc2()
  });

});`

Firebase 函数日志中没有崩溃或异常。任何帮助深表感谢。谢谢


我在尝试解决另一个问题时无意中找到了答案。

您需要加入付费 Firebase 计划才能进行外部 API 调用:https://firebase.google.com/pricing/ https://firebase.google.com/pricing/

因此,只要您升级了计划,PURGE 方法就确实有效。 以下是允许您清除 CDN(Typescript 中的 Node.js)的代码:

import * as request from "request-promise";

const purgeUrl = `examplesite.com`;
await request(purgeUrl, { method: "PURGE" });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有云功能的 Firebase 托管 - 如何清除/刷新 CDN 缓存? 的相关文章

  • Java固定内存映射

    有没有一种简单 高效的Map允许限制映射使用的内存的实现 我的用例是 我想在创建时动态分配大部分可用内存 但我不希望OutOFMemoryError将来的任何时候 基本上 我想使用这个地图作为缓存 但我想避免像这样的重缓存实现EHCache
  • Zend_Cache_Backend_Sqlite 与 Zend_Cache_Backend_File

    目前我正在使用 Zend Cache Backend File 来缓存我的项目 尤其是来自外部 Web 服务的响应 我在想是否能找到将结构迁移到 Zend Cache Backend Sqlite 的一些好处 可能的优点是 文件系统有序 缓
  • 尽管我没有使用 AppEngine 或 Datastore,但我无法在项目上启用 firestore

    我正在尝试在一个项目上激活 firestore 但我没有使用 AppEngine 或 Datastore 并且出现此错误消息 无法为此项目启用 Firestore 目前无法在已使用 Cloud Datastore 或 App Engine
  • 针对特定错误消息设置 stackdriver 警报

    无法找到一种干净的方法来设置有关云函数中错误的 Stackdriver 警报通知 我正在使用云函数将数据处理到云数据存储 我希望收到两种类型的错误警报 可能导致功能 崩溃 的技术异常 我们从云函数记录的自定义错误 我已经完成了以下操作 创建
  • 如何清理 Firebase 托管中旧的部署版本?

    每次部署到托管的 Firebase 时 都会创建一个新的部署版本 以便您可以回滚并查看部署者 这意味着每次部署的每个文件都会被存储并占用更多空间 除了手动将每个已部署的版本一一删除之外 是否有任何自动化的方法来清理那些无用的文件 你是对的
  • 如何在反编译apk中获取Google-Service.Json文件?

    我想知道是否有可能获得google service json对 Android apk 进行逆向工程时的文件 因为在 firebase Google Service json 文件中包含项目的所有密钥 JSON 文件不包含在您的 APK 中
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • 使用部分字符串匹配进行 Firebase 查询[重复]

    这个问题在这里已经有答案了 假设我有一个简单的 firebase 实时数据库结构 其中关键是username其值为userid 现在我想搜索userid by username 如果用户名匹配 这很容易 但如何获得部分匹配的答案 更清楚地说
  • Android 架构组件与 Firebase 特别是 Firestore

    我正在经历这个blog https firebase googleblog com 2017 12 using android architecture components html by 道格 史蒂文森 https twitter co
  • Firebase 未定义?

    我正在开发一个 Angular 项目并使用 Firebase 但出现错误ReferenceError Firebase is not defined 但我不明白为什么 这是我的index html
  • FirebaseRecyclerViewAdapter 中的过滤器

    关于这个问题 如何实现 SetOnItemClickListener FirebaseRecyclerViewAdapter https stackoverflow com questions 34110497 how to impleme
  • 在 Firebase 重置密码表单中自定义验证和文本?

    我在我的 flutter 应用程序中使用 Firebase 身份验证 我使用 PIN 代替普通密码 这是我严格定义的 6 位数字 如果我的用户忘记了 PIN 码 我唯一的选择 或不是 是致电sendPasswordResetEmail me
  • Flutter 和 Firebase - 使用 firebase_storage 和 firebase_auth

    使用 firebase 包 https pub dartlang org packages firebase auth https pub dartlang org packages firebase auth https pub dart
  • 如何向 firebase.auth() 添加附加信息

    如何向该数据集添加额外的电话号码和地址属性 Firebase 文档似乎没有指定任何相关内容 我已经使用实现了登录 注册和更新firebase auth Login Email Login firebase auth signInWithEm
  • 当应用程序打开时,应用程序未显示接收 FCM 的通知

    当我从 Firebase 发送推送时 如果应用程序在后台或已关闭 我会收到通知 但当应用程序打开时不会 调试我发现它在 MyMessagingService 中特别是在 onMessageReceived 处停止 所以我猜我的问题在于生成通
  • Django 不显示更新的 css 文件

    因此 我使用 sass 来更新我的 Django 站点 并使用 git 来对整个内容进行版本控制 我最近对 CSS 文件进行了更新 其中存在一些严重错误 Sass 编译了更改 然后我将新版本推送到服务器 我查看了服务器 新的 css 文件实
  • Firebase 连接管理器应仅返回一个结果

    我正在关注位于以下位置的文档 https www firebase com docs ios guide offline capability html section connection state https www firebase
  • 使用 Azure AD B2C 进行 Firebase 身份验证

    我有一个用 xCode Swift 开发的本机 iOS 应用程序 它集成了Firebase 身份验证 https firebase google com docs auth 用于新用户注册和登录的SDK Firebase Auth 系统应链
  • 将代码保存在 L1 缓存中

    我一直在阅读维基百科关于 K 编程语言的文章 http en wikipedia org wiki K programming language Performance characteristics这就是我所看到的 解释器的小尺寸和语言的
  • ChangeState 之后重置/卸载控制器(调用注销)。 AngularJS

    我正在创建一个应用程序 用户可以从 Facebook 或 Twitter 登录 登录后 用户将被定向到某个主页 在这里 控制器加载并调用我的初始函数 该函数加载特定于该用户的数据 当用户单击 注销 时 令牌将被清除 用户将被定向到登录页面

随机推荐