当我在 Zeit Now 上部署我的 Nuxt JS 通用应用程序时,我试图利用Zeit 缓存文档Cache-Control
中提到的 Zeit 标头。
然后我试图寻找如何Cache-Control
在我的 Nuxt JS 应用程序中添加标题,幸运的是发现了这个 GitHub 问题,它解释了同样的事情。
现在,当我serverMiddleware
在 Nuxt 应用程序中使用反正来获取当前登录用户的数据firebase-admin
时,我想我可以很容易地在我的代码中添加响应头,所以我做到了。在我的/serverMiddleware/handleCookie.js
我有这样的:
const Cookies = require('cookies')
const admin = require('../services/firebase-admin-init')
export default async (req, res, next) => {
res.setHeader('Cache-Control', 's-maxage=1000, stale-while-revalidate')
try {
const authUser = await verifyCookie(req, res)
if (authUser) {
const userData = await fetchUserDetailsFromFirestore(
req,
authUser.uid,
authUser.email_verified
)
if (userData) {
next()
}
} else {
next()
}
} catch (error) {
console.error(error)
}
}
现在最疯狂的是,当我运行 dev ieyarn nuxt
并通过 localhost 检查我的网站时,我可以很容易地在 Chrome 网络工具中看到我添加的标题。
但是当我将我的项目推送到 Zeit Now 进行托管now --prod
并检查我的实际站点时,我看不到这个标题。
现在我不明白我是否做错了什么,因为如果我做错了,它不应该出现在 localhost 开发响应标头中。我花了很多天试图解决这个问题,但无处可去。不知道为什么会这样。我还在使用nuxt/now-builder进行 Zeit 部署,这是我的now.json
文件。
{
"version": 2,
"regions": ["bom1"],
"builds": [
{
"src": "nuxt.config.js",
"use": "@nuxtjs/now-builder",
"config": {
"serverFiles": [
"services/firebase-admin-init.js",
"serverMiddleware/**"
]
}
}
]
}
如果有人可以在这件事上提供帮助,那将非常有帮助。