使用Firebase主机+;云跑。我应该在express服务器上设置'compression()'?
我有一个SPA(sing page应用程序),内置React+Firebase 这就是流程: firebase.json使用Firebase主机+;云跑。我应该在express服务器上设置'compression()'?,firebase,express,gzip,firebase-hosting,google-cloud-run,Firebase,Express,Gzip,Firebase Hosting,Google Cloud Run,我有一个SPA(sing page应用程序),内置React+Firebase 这就是流程: firebase.json 将所有内容重写到我的云运行express服务器 我在Firebase主机上有一个已连接的自定义域:www.example.com 在Firebase托管中,我们可以看到Firebase托管通过CDN提供内容,默认情况下启用了gzip 考虑到这一事实,它是否让send打开我的express服务器上的压缩在云上运行 例如: const app = express();
- 将所有内容重写到我的云运行
服务器express
- 我在Firebase主机上有一个已连接的自定义域:
www.example.com
gzip
考虑到这一事实,它是否让send打开
我的express
服务器上的压缩在云上运行
例如:
const app = express(); // INITIALIZE EXPRESS APP
const publicFolder = path.resolve(__dirname,"../public");
app.use(compression());
app.use(express.static(publicFolder));
我猜这是有道理的,因为Firebase托管将数据从托管CDN的
压缩到用户
,而我的express
服务器将数据从云运行压缩到托管CDN
,这对吗?根据文档所说,静态内容自动缓存在CDN上,并以正确的压缩方式提供给用户。但是,默认情况下,由后端代码(云函数或云运行)处理的请求不会缓存在CDN上,因为它是动态的
不要通过应用程序设置压缩,而是通过设置缓存控制
并将缓存标记为公共
来配置动态内容的缓存。缓存后端内容后,Firebase主机将根据用户可以处理的内容(gzip或Brotli)对其进行压缩
例如:
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
注意:只能缓存GET和HEAD请求。使用其他方法的HTTPS请求永远不会被缓存
查看更多信息。您的意思是,如果我没有通过CDN缓存,我就不会进行CDN压缩?但是“不可缓存”的响应也会通过CDN传递,不是吗?CDN就是这样工作的,通过存储缓存内容并将其交付给用户。其他CDN不会自动压缩响应,但是,您可以使用诸如gzip之类的编码来提供压缩的响应。如果由于您发送的请求的类型,您的响应无法缓存,那么您可以通过后端代码配置压缩和其他优化。
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');