从请求到响应:理解服务端渲染
沿着一次页面请求走一遍,把数据读取、HTML 生成和客户端交互放回它们各自的位置。
本文为可替换的原创演示文章。
浏览器第一次拿到什么
访问文章地址时,浏览器首先需要一个可阅读的页面。服务端渲染的思路,是在服务端读取数据并生成 HTML,再把结果发送给浏览器。文章正文不必等到客户端执行完一段数据请求后才出现。
这很适合博客:正文是主要内容,搜索引擎和分享预览也需要稳定的标题与摘要。交互较少的页面不必把所有数据处理逻辑发送到浏览器。
服务端并不等于永远实时
渲染发生在服务端,和每次访问都查询数据库,是两个不同的决定。一个页面可以在构建时生成,也可以按请求生成,还可以在指定时间之后重新验证缓存。
选择策略时,先问内容允许延迟多久。个人博客的已发布文章通常更新不频繁;管理后台则必须及时看到刚保存的草稿。不同场景不应机械套用同一个缓存规则。
把交互留给小组件
搜索输入、菜单开关、编辑器预览需要浏览器状态。将这些部分做成小的客户端组件,可以让正文、导航和数据读取继续留在服务端。
一个简单的判断方法是:如果去掉 JavaScript,这个区域是否仍应该被阅读?文章正文的答案通常是肯定的。这个问题能帮助我们划清界面边界,而不必先从框架术语开始。