next.js 如何重新生成Firebase缓存

s1ag04yj  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(79)

我的nextjs项目(nextjs网站)在google-firebase上运行时遇到了一些问题。我使用google-cloud-functions来运行这个网站。
我想使用缓存。据我所知,在Firebase上托管的Web应用程序会自动将结果存储到CDN,当有正确的标题时。
我在页面中添加缓存头。

# pages/[[...slug]].tsx
export const getServerSideProps = context => {
    ...
    const cacheControlHeader = `public, max-age=${secondsForImages}`;
    const expiresHeader = new Date(Date.now() + secondsForImages * 1000).toUTCString();
    context.res.setHeader('Cache-Control', cacheControlHeader);
    context.res.setHeader('Expires', expiresHeader);
    return { props };
    ...
}

字符串
例如:Expires: Sun, 24 Dec 2023 19:01:34 GMT+1天从Sun,23 Dec 2023 19:01:34 GMT
Firebase很好地存储了页面。在第一次缓慢的请求之后,我很快就从缓存中获得了这个页面
比,我想改变一些页面,比清除和重新生成它的缓存。我使用curl -X PURGE https://www.mywebsite.ololo/mypage,它也工作得很好
对于重新生成,我尝试这样做curl -v https://www.mywebsite.ololo/mypage(我也尝试了wget)。我得到正确的标题一切都很好.但这只适用于下一个curl请求,不适用于浏览器。当我试图从我的浏览器中获取它时,通常它做得很慢(第一次)。
有没有人可以帮助我如何从bash(或node-app或php-app)请求重新生成浏览器的缓存?

7cjasjjr

7cjasjjr1#

此标题:

public, max-age=${secondsForImages}

字符串
这会告诉目标浏览器和任何中间服务器,您发送的响应在max-age秒内有效。在此之前没有通用的方法来清除文件。
如果响应可能会更快到期,则发送较短的max-age;或者考虑为每个唯一响应生成唯一URL(例如,通过在其中包含哈希)。

更新:有一种未记录的方法可以清除特定URL的内容,一个团队成员描述了here。正如在回答中所说的,不能保证这仍然/继续工作,但值得一试:

curl -X PURGE https://my.firebasehosting.site.com/path/to/content

相关问题