• 服务器端渲染SSR的优缺点?


    SSR代表服务器端渲染(Server Side Rendering),这里主要以React为目标讨论这个话题,但是对其他框架也有参考意义。

     

    关于SSR你需要关注:

    1. 首次重要的绘制。单靠SSR并不能保证良好的效果,还需要关键的CSS和靠近客户端。

    2. 支持SEO,支持Twitter和Facebook等其他机器人

    3. 优雅的退化。这样能确保你的服务在没有JS的情况下也是可用

     

    有什么难的?

    SSR就像一个新的维度,无论你使用什么,你都需要为SSR重新配置。

    1. 用componentDidMount来获取数据吗?你就需要使用类似getInitialProps(来自next.js或after.js)或状态管理库(如Redux),这些要放在服务器上运行。

    2. 用Router吗?你需要在服务器上配置它

    3. 用i18n吗?你需要在服务器上配置它

    4. 使用HMR吗?你需要为浏览器和服务器重新加载代码

    5. 用react-helmet吗?需要在服务器上配置它

    6. 是否使用react-loadable?需要配置服务器以传递使用的模块,这样客户端可以预加载它们

    7. 使用Redux吗?您需要序列化存储并将其传递给客户端

    8. 使用CSS-in-JS吗?需要在服务器上配置它,生成关键CSS并在HTML响应中内联它

     

    不要以为这些都是可以解决的,好像Next.js和Razzle已经解决了大部分问题,我想告诉你的是SSR如何将所有事情加倍(另一个维度),并且大部分时间都需要样板来处理所有事情。

     

    第一次重要的绘制

    如果正在进行SSR,这并不意味着你能获得开箱即用的第一次重要的绘制。

     

    1. 你的设置是否有为第一个字节这是好时间?如果你的服务器运行缓慢或过载 - 你会遇到问题,确保使用最新节点,缩小服务器代码,使用流式渲染,优化子查询(数据库或网络)(如果有)。

     

    2。 你提供关键的CSS吗?否则,浏览器无法开始呈现页面。

     

    3. 你使用网络字体吗?如果是的话,你会优化吗?

     

    4. 服务器是否靠近客户端?如果您的服务器在欧洲,但客户端在日本,SSR将无法帮助您。使用CDN服务,但是如果由于法律限制而无法将服务器移近客户端怎么办?

     

    5. 你确定没有不必要的重定向吗?重新定向减慢速度。

     

    6. SSR不是第一次重要绘制渲染的银弹。如果你的后端很慢或很远,你需要检查"shell"包括CDN是否能更好地工作。你可以使用react-snap之类的东西来预呈现静态页面并为其他页面生成“shell”。

     

    7. 如果您的网站更加静态,您可以使用预渲染而不是SSR。使用react-static或gatsby或react-snap。

     

    SEO

    这里有3个选项:

    1. SSR

    2. 预渲染,如react-snap, react-static, gatsby 等。

    3. 根据需求进行预渲染,如rendertron,puppetron,pupperender等。

     

    如果可以,请选择预渲染。如果您唯一关注的是SEO,那么随时都可以轻松使用预渲染。

     

    优雅的退化

    这个很棘手,这真的取决于你想要降到多少级?

     

    1. 你想支持链接吗?

    2. 是否想要支持下拉菜单,就像在https://www.seek.com.au/中一样?你需要使用CSS和复选框的一些技巧

    3. 你想要支持表格吗?除了现有的JSON API之外,您还需要端点来处理这些表单

    4. 没有JS的一些功能非常难,比如组合框或地图

     

    结论

    SSR很好,试一试。请确保您的用户真正从中受益。

    如果您不能使用SSR而是尝试预渲染器,有时它是最简单的选择。

     

    Server Side Rendering pros and cons. When to use i

  • 相关阅读:
    ARM的体系结构与编程系列博客——ARM体系版本
    eclipse快捷键
    ARM的体系结构与编程系列博客——ARM的历史与应用范围
    基于LINUX的多功能聊天室
    CC2530自动安全联网
    python3元组
    Python3 列表
    Python3 数字(Number)
    Python3 注释
    python3解释器
  • 原文地址:https://www.cnblogs.com/1549983239yifeng/p/14352156.html
Copyright © 2020-2023  润新知