首页 > 解决方案 > 向非身份验证端点提供登录体验时静态渲染的限制

问题描述

我一直在使用很棒的静态站点渲染器 gatsby 有一段时间了,但是我遇到了一个用例,它可能不是任何静态站点生成器的最佳选择,我想知道是否有标准的做法来处理这个问题。

问题是:是否可以根据您是否登录为相同的 URL 提供略有不同的体验?

https://github.com/gatsbyjs/gatsby为例。如果您已注销,您会看到一个为存储库加注星标的按钮。但是,当您登录并为它加星标时,您会看到“取消星标”。

从源头来看,它似乎在服务器的初始有效负载中。

但要让它发挥作用,您需要一个服务器,它可以 1.) 确定您是否已登录,以及 2.) 根据您的个人资料/偏好/数据显示某些内容。

似乎提供稍微不同的体验的唯一方法是呈现静态内容,然后在 javascript 运行/调用进行身份验证后对其进行更改,这不太理想。

也许初始渲染可以检查 cookie 的存在,甚至在验证 cookie 之前对 DOM 进行某些更改,但它永远不能假设您是否为存储库加星标或取消星标。

我在这里遗漏了什么还是真的只是技术的限制?

标签: gatsbyserver-side-rendering

解决方案


通常,您希望通过 service worker 将站点提供给经过身份验证的用户,因为它可以快速为用户进行初始渲染自定义。这种模式通常称为 App Shell 模型https://developers.google.com/web/fundamentals/architecture/app-shell


推荐阅读