笔者在网上冲浪的时候,看到了一个词,前端渲染模式。然后就产生了一个疑问,这是什么东西?在了解之后呢,才恍然大悟,原来我们每天在浏览器浏览的页面背后,在呈现给我们的过程也有一些不同的方法和策略,最终将页面展现给我们。那接下来就由笔者带大家看看这些方法和策略。
CSR(Client Side Rendering),就是一种在浏览器执行JavaScript代码已生成页面并显示的方法,这种方法更贴近现代前端开发。大致流程是用户在客户端通过浏览器发起HTML网页的请求时,服务器不做任何处理直接返回原始的静态HTML文件。客户端收到后,浏览器进行解析构建、下载执行JavaScript,这个执行JavaScript过程可能还会与服务器进行数据交互,将最终得到的结果进行渲染并展示给用户。
客户端渲染的优点
但是客户端渲染也有它的缺点:
SSR(Server Side Rendering),服务端渲染,它是用户请求页面时,服务器在服务端执行JavaScript代码,生成一个完整的HTML页面,然后将其发送给客户端的浏览器,浏览器解析就能直接显示页面内容。
最早是为了解决单页应用(SPA)产生的SEO、首屏渲染时间问题诞生的。显然,它的优点就是这两个,一是SEO比较友好,搜索引擎爬虫会比较容易抓取页面的有效内容,因为浏览器获取的是一个完整的页面资源。二是首屏渲染快,服务端直接返回的带有数据的HTML文本,浏览器只需要解析构建就能渲染页面,用户能够更快地看到页面内容,提供了比CSR更好的初始加载的体验。
这样看起来SSR比较好,不过呢它也有自己的局限:
SSG(Static Site Generation),是一种构建静态网站的一种方法,即构建时就预先生成静态页面,并将其部署到CDN或者其他Web服务器中,有效提高了SEO和用户体验。
它的大致流程是,在构建过程中,将源文件以及模版等拼接结合,生成一个静态页面,之后进行预渲染,就是里面需要的数据等向服务器请求获取,并将其接入到这个静态页面中,然后将其输出成一个个文件,这时这些就是可以直接显示的资源文件。之后就可以把它们部署在支持静态文件的Web服务器,之后就可以交由用户进行请求浏览。
它的优点很多:
ISR(Incremental Static Regeneration),它是上面SSG的改进,并且还结合了SSR的一些优点。它的核心思想也很简单,对于一些重要的关键的即主要的页面数据,通过SSG的方式预渲染成静态页面部署在Web服务器上,保证良好的访问性能。对于那些非重要的不关键的即次要的内容,即时响应fallback内容,并且将数据交由浏览器渲染完成,同时将其缓存到Web服务器中。
ISR就很好的在静态和动态资源之间找到了平衡点,对于不经常变动的页面就可以用SSG生成,从而达到快速加载以及低服务器负载的效果。但是有些资源的存在可能会导致用户感知上有不好的体验:
这么多选择全都要当然是不太可能的,不过这些方案也并非是互斥并列的,我们需要考虑的是自己的项目需要关注的点是哪些。
因此,没有最好的只有最合适的。可以根据自己的项目关注点以及各种渲染模式的优缺点进行选择,选择适合自己的渲染模式。
好了,介绍了几种渲染模式的概念,并且指出了各自的优缺点,希望能够帮助大家对于前端渲染模式的理解。而且笔者才疏学浅,如有错误,欢迎大家在评论区留言指正。