为什么Firebase主机会给我的云运行服务器响应时间增加1.0秒?

为什么Firebase主机会给我的云运行服务器响应时间增加1.0秒?,firebase,server-side-rendering,firebase-hosting,google-cloud-run,Firebase,Server Side Rendering,Firebase Hosting,Google Cloud Run,我在Firebase主机上托管了一个web应用程序,它会将每个请求重写为运行express服务器的云运行服务 firebase.json "rewrites": [{ "source": "**", "run": { "serviceId": "server", "region": "europe-west1"

我在Firebase主机上托管了一个web应用程序,它会将每个请求重写为运行express服务器的云运行服务

firebase.json

"rewrites": [{
  "source": "**",
  "run": { 
    "serviceId": "server", 
    "region": "europe-west1"
  }
}],
用户将获得常规的
index.html
文件,其中包含JS捆绑包的
标记,因为我的应用程序是客户端呈现的SPA(单页应用程序)。所有这些静态文件都被缓存在承载CDN的Firebase上,它们的服务速度非常快(比如30到100毫秒)

但是我的服务器为机器人做SSR。这些响应不会被缓存。因此,每当一个bot(比如Googlebot)来访问时,响应将来自我的服务器(以保证新的数据),而不是来自CDN

SSR响应(从我的浏览器进行测试)通常需要1.5到2秒,我认为这有点太长了,如上图所示

当我检查Cloud Run的日志时,我可以看到这些响应大约需要300到400ms(下图)

那么,为什么需要1.5到2.0秒才能到达我的浏览器?如果响应是在400ms内生成的,那么额外花费的1.0秒在哪里?Firebase是否花费太长时间来进行重写

额外的

当我直接点击云运行URL(绕过Firebase主机连接的自定义域)时,我会在大约150毫秒内得到响应(下图)

该响应是302重定向,因为我的服务器被配置为将直接进行的任何调用重定向到其URL(即:不通过Firebase主机)。这确保我的应用程序只能从其连接的域访问。但是,即使我们加上150ms+350ms(来自实际的SSR响应),也将是500ms,这比通过Firebase主机响应所需的1.5秒要短得多


这正常吗?

您尝试过不同的地区吗<代码>美国中央1等…?另外,根据您的用例,您可能需要通过设置适当的缓存HTTP报头来考虑CDN缓存。FialBASE托管使用快捷的CDN,并且不知何故源极慢……当您直接命中云运行时,我理解服务器没有提供数据(响应302)。这会导致时间上的差异吗?提供的数据有多大?我指的是通常被缓存的那个。此外,谷歌机器人和服务器的位置是否相距很远?