当您将Gatsby应用程序构建到生产构建中时,您将在控制台中看到以下内容:
success Caching JavaScript and CSS webpack compilation - 25.915s
success Caching HTML renderer compilation - 14.491s
Gatsby缓存了一些构建文件,以便后续构建将更快。问题是,我正在将项目部署到不支持缓存的服务中。部署完成后,所有内容都将被丢弃。所以把20%的构建时间花在缓存上是没有意义的。
有没有人知道如何禁用缓存,而构建生产构建?
有两种方法(据我所知)可以做到这一点,或者至少您可以尝试:
-
在你的
gatsby-node.js
使用onPostBuild
API调用,其中缓存管理设置:exports.onPostBuild = async function ({ cache, graphql }, { query }) { const cacheKey = "some-key-name" const twentyFourHoursInMilliseconds = 24 * 60 * 60 * 1000 // 86400000 let obj = await cache.get(cacheKey) if (!obj) { obj = { created: Date.now() } const data = await graphql(query) obj.data = data } else if (Date.now() > obj.lastChecked + twentyFourHoursInMilliseconds) { /* Reload after a day */ const data = await graphql(query) obj.data = data } obj.lastChecked = Date.now() await cache.set(cacheKey, obj) /* Do something with data ... */ }
你可以尝试在缓存起作用之前返回/跳过函数。
-
尝试使用盖茨比标志:
module.exports = { flags: { PRESERVE_WEBPACK_CACHE: false, PRESERVE_FILE_DOWNLOAD_CACHE: false }, plugins: [...] }
在这种情况下,
PRESERVE_WEBPACK_CACHE
和PRESERVE_FILE_DOWNLOAD_CACHE
可能对您有用。
也许你可以用这些方法开始拉线程。