gatsby - 向非身份验证端点提供登录体验时静态渲染的限制
问题描述
我一直在使用很棒的静态站点渲染器 gatsby 有一段时间了,但是我遇到了一个用例,它可能不是任何静态站点生成器的最佳选择,我想知道是否有标准的做法来处理这个问题。
问题是:是否可以根据您是否登录为相同的 URL 提供略有不同的体验?
以https://github.com/gatsbyjs/gatsby为例。如果您已注销,您会看到一个为存储库加注星标的按钮。但是,当您登录并为它加星标时,您会看到“取消星标”。
从源头来看,它似乎在服务器的初始有效负载中。
但要让它发挥作用,您需要一个服务器,它可以 1.) 确定您是否已登录,以及 2.) 根据您的个人资料/偏好/数据显示某些内容。
似乎提供稍微不同的体验的唯一方法是呈现静态内容,然后在 javascript 运行/调用进行身份验证后对其进行更改,这不太理想。
也许初始渲染可以检查 cookie 的存在,甚至在验证 cookie 之前对 DOM 进行某些更改,但它永远不能假设您是否为存储库加星标或取消星标。
我在这里遗漏了什么还是真的只是技术的限制?
解决方案
通常,您希望通过 service worker 将站点提供给经过身份验证的用户,因为它可以快速为用户进行初始渲染自定义。这种模式通常称为 App Shell 模型https://developers.google.com/web/fundamentals/architecture/app-shell
推荐阅读
- r - csv(或txt)格式的配置文件
- c# - 为什么 ApiAuthorization 在 .NET 5 中不起作用
- python - 变形金刚:如何使用抱脸EncoderDecoderModel做机器翻译任务?
- python - How to print random words in Python and find the most used word
- angular - Angular (11) API 请求缓存
- amazon-cognito - AWS Cognito 重定向后 CloudFront 以 413 响应
- java - 如何在文本框中输入当前日期和时间
- amazon-web-services - Kubernetes - 使用单个负载均衡器对多个服务进行负载均衡
- java - 每 10 秒在 inifnity 循环中搜索一个单词
- angular - 无法解析依赖树