所以,SSR意味着服务器发送一个完整的html,css和js文件,而CSR只发送空的html,客户端再次获取js来填充页面上的数据。
我想想象这个。有什么方法可以看到"空的html"或"完全打包的html css js"文件,以便我可以更清楚地了解我所看到的内容。
任何帮助将不胜感激。多谢。
实际上,服务器端和客户端渲染之间没有硬性界限。大多数称之为CSR的应用程序仍然在其服务器响应中发送回html,有时甚至很多html。大多数人称之为SSR的应用程序仍然会对其页面的html进行细微调整,以响应用户事件。
例如,假设您正在为底部有用户评论的文章提供页面。您的服务器可以:
在将- 完成的 html 发送到客户端之前,直接在服务器上构建所有 html,包括所有注释的内容。这是苏维埃社会主义共和国。
- 在那里建立一个包含大量html的大纲(导航,要填充的空框等(,然后发送。具体的评论和文章内容将在客户端填写。这将被称为企业社会责任。
- 发回一个空的 html 文档,并附有脚本,该脚本将填充整个内容。这绝对是企业社会责任。
对我来说,一个完全 SSR 应用程序的最大特点是,如果您保存某些内容/进行一些将持续存在的更改,页面通常会作为保存的一部分重新加载。CSR 应用程序更有可能保存,并可能重绘页面的某些部分,而无需完全重新加载。
最后要注意的是,要查看浏览器中渲染了多少 html,您可以将view source
与开发工具中的element inspector
进行比较。如果右键单击 ->查看源代码,您将准确看到服务器发送的内容。但是,如果您右键单击 -> inspect 元素并使用开发工具查看 html,您将看到现在的所有内容,即在完整的客户端渲染之后。如果它们相同,则这是一个 SSR 应用程序,它们越不相同,CSR 就越多。
使用服务器端语言(PHP/Python/perl(并执行cURL并获取初始有效负载。或者做一个wget,任何适合你的东西。这可能是一个 html 文件。
然后在客户端:
const ser = new XMLSerializer;
let dump = ser.serializeToString(document.documentElement);
您可以按间隔重复上述步骤并与初始步骤进行比较。在服务器端,如果你使用nodeJS,你可以使用puppeteer的无头浏览器来执行上面。
您可以将输出提供给 git diff 以获得概述。