#优质博文 #前端 #CSS #Astro #ISR #性能优化
想起以前做的 ISR,心血来潮搜一下 Astro 里的 ISR 怎么做,做一下。
On-Demand ISR For Astro on Vercel
[以下是方便搜索索引的大纲(AI 生成),请读原文]
author Shawn
想起以前做的 ISR,心血来潮搜一下 Astro 里的 ISR 怎么做,做一下。
On-Demand ISR For Astro on Vercel
AI 摘要:本文详细介绍了如何在 Vercel 平台上为 Astro 静态网站配置按需增量静态再生成 (On-Demand ISR)。文章首先解释了 ISR 和按需 ISR 的概念及其适用场景,然后通过一步步的代码示例,指导读者如何初始化项目、添加 Vercel 适配器并配置 ISR 参数、创建动态页面,以及最关键的部分——如何通过一个受保护的 API 端点来手动触发缓存失效和页面重建,从而实现对静态内容更新时间的精细控制。
[以下是方便搜索索引的大纲(AI 生成),请读原文]
1. 概念解析
• 什么是 ISR:解释增量静态再生成 (ISR) 的概念,即无需重新构建或部署整个网站即可更新静态内容(如博客文章或 GET API 端点)。
• 什么是按需 ISR:对比传统基于 TTL(生存时间)的 ISR,说明按需 ISR 允许在 TTL 到期前手动使缓存失效并触发重建,从而更精确地控制内容的新鲜度。
• 适用场景:列举按需 ISR 的典型用例,如不常更新但更新后需立即生效的内容,或渲染成本高(计算、时间、外部 API 费用)的频繁访问内容。
2. 项目配置
• 初始化 Astro 项目:使用命令行工具创建一个包含 Tailwind CSS 和 React 的 Astro 项目,并初始化 Git。
• 添加 Vercel 适配器:通过 astro add vercel 命令添加适配器,并在 astro.config.mjs 文件中配置 ISR 参数,包括设置 bypassToken(用于授权缓存失效的密钥)和 exclude(排除 API 路由不被缓存)。
3. 实现与验证
• 创建动态页面:在首页添加一个显示服务器渲染时间戳的组件,用于验证缓存效果。部署后,刷新页面时间戳不变,且响应头 x-vercel-cache 显示 HIT,证实页面来自缓存。
• 实现按需失效端点:创建一个受保护的 API 端点 (/api/invalidate),该端点接收 POST 请求,内部向目标路由发送带有 x-prerender-revalidate 头(值为 bypassToken)的 HEAD 请求,以触发缓存失效和重建,并验证响应头确认操作成功。
• 测试:通过 curl 命令调用该 API 端点,成功使首页缓存失效,再次访问首页时看到新的时间戳,证明按需 ISR 生效。
author Shawn