我需要在构建时计算和缓存前端和后端API路由都需要的新数据.有没有办法读取构建时由API路由生成的静态属性?API路由是可公开访问的,所以我不能只从前端传递数据.
我需要在构建时计算和缓存前端和后端API路由都需要的新数据.有没有办法读取构建时由API路由生成的静态属性?API路由是可公开访问的,所以我不能只从前端传递数据.
所有的构建构件都保存在.next
文件夹中,这是在应用程序源代码之外,因此您的代码将无法访问它.
如果您在getStaticProps
中获取的数据计算起来很耗时,我会将其保存在大约cache
中,然后从API路径中的缓存中读取.
UPDATE:个 我撒谎了,我玩弄了一下,实际上访问缓存的页面数据是可能的,但有一些警告.
在.next/server/pages/
中保存给定页面的构建构件.导出的静态props 存储在与页面路径匹配的JSON文件中.例如,/contact
的静态props 住在.next/server/pages/contact.json
里.
当您执行yarn build
时,这些文件将被删除,因此您不能简单地使用
import data from '../../.next/server/pages/contact.json'
因为这会因为您try 导入不存在的文件而中断构建.
您可以这样加载此文件:
const cacheDirectory = path.join(process.cwd(), '.next/server/pages/');
const fileContents = await fs.readFile(cacheDirectory + '/contact.json', 'utf8');
这将构建得很好,当您运行yarn start
个版本时,它会起作用.但是...当您执行yarn dev
操作时,它将不起作用,因为此命令将清除Build文件夹.要解决这个问题,您可以判断NODE_ENV
值并仅在production
模式下运行此逻辑,并在此场景中使用一些模拟数据.