gpt4 book ai didi

javascript - Firebase 函数 - 如何验证从 CDN 缓存加载静态内容?

转载 作者:行者123 更新时间:2023-12-03 02:41:41 27 4
gpt4 key购买 nike

我正在构建一个服务器端渲染的 React、Redux 应用程序。我正在使用 Firebase Cloud Functions 上的 Express 应用返回 http 请求。

我使用此行启用了缓存:

res.set('Cache-Control', 'public, max-age=1200, s-maxage=1200');

如何验证当我清除浏览器缓存并重新加载时,它是否从 CDN 缓存加载,而不是再次运行该功能?我怎么知道它正在工作?

本地 cli 的工作方式是否与我期望的完全部署版本的工作方式相同?

firebase serve --only functions,hosting

服务器端index.js文件

import React from "react";
import ReactDOMServer from 'react-dom/server';
import { Provider } from "react-redux";
import { createStore, applyMiddleware } from "redux";
import thunk from "redux-thunk";
// import { StaticRouter } from "react-router";
import express from "express";
import * as functions from "firebase-functions";

// Import Components, Reducers, Styles
//import App from "../shared/components/App";
import News from "../shared/containers/News";
import reducers from "../shared/reducers";

// Prepare our store to be enhanced with middleware
const middleware = [thunk];
const createStoreWithMiddleware = applyMiddleware(...middleware)(createStore);

// Create store, compatible with REDUX_DEVTOOLS (chrome extension)
const store = createStoreWithMiddleware(reducers);

const app = express();
app.get('**', (req, res) => {
const html = ReactDOMServer.renderToString(
<Provider store={store}>
<News />
</Provider>
);
const preloadedState = store.getState();
res.set('Cache-Control', 'public, max-age=1200, s-maxage=1200');
res.send(renderFullPage(html, preloadedState));
});

function renderFullPage(html, preloadedState) {
return `
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>React Server Side Rendering - Firebase Hosting</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="root">${html}</div>
<script>
window.__PRELOADED_STATE__ = ${JSON.stringify(preloadedState).replace(/</g, '\\u003c')}
</script>
<script type="text/javascript" src="bundle.js"></script>
</body>
</html>
`
}

export let ssrapp = functions.https.onRequest(app);

最佳答案

即使加载 URL 触发 Cloud Functions,该文件也将始终从 CDN 提供服务。因此,虽然您可以检查 header (viax-served-by 如果您好奇)它是否确实来自边缘缓存(以及哪一个),您无法从收到的响应中看出它是否触发了 Cloud Functions。

我能想到的最佳选择是检查 Cloud Functions 日志,以查看该函数是否已运行。

关于javascript - Firebase 函数 - 如何验证从 CDN 缓存加载静态内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48303490/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com