Gatsby 博客 - 每个新 post 都需要在构建后进行硬刷新
Gatsby blog - every new post requires hard refresh after build
我有 gatsby 博客,在我创建一个新的 post 并构建静态文件后,将它们上传到我的主机上,每个用户都必须在我的博客上进行硬刷新才能看到更改。
上传新版本后如何在下次访问时自动刷新?
您的 .html
文件上可能有 HTTP cache-control headers 告诉浏览器它们可以安全缓存。您想要删除那些 cache-control headers,或者至少将您的 HTTP 缓存配置为需要验证 (must-validate
)。如果您使用的是 Gatsby v2.9.0+,则需要对 page-data.json
文件执行相同的操作。
这种行为的另一个原因是在我的例子中 gatsby-plugin-offline
实现的服务工作者。
服务人员被编程为在导航时更新。问题是,当用户回家并且不再继续导航时,将看不到更新。如果您只有一页网站,您基本上永远不会看到更新,因为无处可导航!
如果想让页面自动刷新,让旧缓存失效,需要触发。如果您的 gatsby-config.js
中有 gatsby-plugin-offline
,请将此行添加到您的 gatsby-browser.js
// trigger an immediate page refresh when an update is found
export const onServiceWorkerUpdateReady = () => window.location.reload();
这里有一些 background information 来自官方 github 存储库的关于这个问题的信息。
正如@coreyway 指出的那样,自动执行此操作可能会有问题。我认为这种行为仍然比坚持使用已弃用的网站版本要好。如果您担心用户体验,链接的 GitHub 问题讨论了一种解决方案,让用户通过单击更新通知消息来触发更新。
我有 gatsby 博客,在我创建一个新的 post 并构建静态文件后,将它们上传到我的主机上,每个用户都必须在我的博客上进行硬刷新才能看到更改。
上传新版本后如何在下次访问时自动刷新?
您的 .html
文件上可能有 HTTP cache-control headers 告诉浏览器它们可以安全缓存。您想要删除那些 cache-control headers,或者至少将您的 HTTP 缓存配置为需要验证 (must-validate
)。如果您使用的是 Gatsby v2.9.0+,则需要对 page-data.json
文件执行相同的操作。
这种行为的另一个原因是在我的例子中 gatsby-plugin-offline
实现的服务工作者。
服务人员被编程为在导航时更新。问题是,当用户回家并且不再继续导航时,将看不到更新。如果您只有一页网站,您基本上永远不会看到更新,因为无处可导航!
如果想让页面自动刷新,让旧缓存失效,需要触发。如果您的 gatsby-config.js
中有 gatsby-plugin-offline
,请将此行添加到您的 gatsby-browser.js
// trigger an immediate page refresh when an update is found
export const onServiceWorkerUpdateReady = () => window.location.reload();
这里有一些 background information 来自官方 github 存储库的关于这个问题的信息。
正如@coreyway 指出的那样,自动执行此操作可能会有问题。我认为这种行为仍然比坚持使用已弃用的网站版本要好。如果您担心用户体验,链接的 GitHub 问题讨论了一种解决方案,让用户通过单击更新通知消息来触发更新。