为什么文本渲染速度比 server-side 渲染的图像慢?
Why does text render slower than images with server-side rendering?
我有很多示例,其中文本呈现速度比几乎感觉即时的图像慢。我通过 reactjs 和 server-side 使用 nodejs 渲染来做到这一点。例如这个 gif:http://recordit.co/waMa5ocwdd
显示 header 图像立即加载,CSS 已经加载,因为颜色已经存在。但是,出于某种原因,文本几乎需要半秒钟才能出现。我该如何解决或优化这个问题?
谢谢!
好的,所以调试这类东西时,点击 YSlow 获取最新提示等很有用。
不过,一般来说,最好记住浏览器会对页面中的每个项目(即带有 URL、图像、css 等的所有内容)发出单独的请求,而且大多数他们中的一些对并发下载有某种限制(4 似乎很常见,但变化很大)。因此,虽然 12 个请求并不多,但还来得及。解析和加载 JS 等的时间也是如此。解析和加载 JS 的时间会更长(通常,在大多数浏览器中,将暂停进一步的下载,直到完成)
无需花费大量时间,我猜测您的 HTML 加载,调用 header 图像,然后浏览器开始访问所有 JS 和 React 框架代码,然后需要一两秒钟才能弄清楚接下来要渲染什么。
同样,YSlow 对如何优化这些东西有很多建议,但这是我的 2c。
编辑:添加详细信息以回答您的第一个问题。
正如我上面提到的,JS 只是问题的一部分。渲染时间的总和将包括下载和解析所有内容(包括 CSS 等)所需的总时间。例如,在 Chrome 调试工具中查看它似乎需要大约 300 毫秒才能下载 html 并进行足够的解析以便调用下一个资源。在我的浏览器中,下一个两个是您的主要 css 和 logo.png。在大约 800 毫秒时,您的徽标已完成下载,并且几乎立即呈现。在 html 下载完成时,第一个 js 脚本开始下载(我不认为关闭 JS 会阻止这种情况发生,尽管它可能会阻止解析发生;我从未测试过) .在大约 700 毫秒的某个地方,您 开始 拉下您正在使用的字体集,看起来它们在 1 秒左右完成下载。在那之后大约 200 毫秒出现您的第一个文本,所以我猜测提取和解析字体文件就是阻碍的原因(当它们与其他资源一起排队时)。
我有很多示例,其中文本呈现速度比几乎感觉即时的图像慢。我通过 reactjs 和 server-side 使用 nodejs 渲染来做到这一点。例如这个 gif:http://recordit.co/waMa5ocwdd
显示 header 图像立即加载,CSS 已经加载,因为颜色已经存在。但是,出于某种原因,文本几乎需要半秒钟才能出现。我该如何解决或优化这个问题?
谢谢!
好的,所以调试这类东西时,点击 YSlow 获取最新提示等很有用。
不过,一般来说,最好记住浏览器会对页面中的每个项目(即带有 URL、图像、css 等的所有内容)发出单独的请求,而且大多数他们中的一些对并发下载有某种限制(4 似乎很常见,但变化很大)。因此,虽然 12 个请求并不多,但还来得及。解析和加载 JS 等的时间也是如此。解析和加载 JS 的时间会更长(通常,在大多数浏览器中,将暂停进一步的下载,直到完成)
无需花费大量时间,我猜测您的 HTML 加载,调用 header 图像,然后浏览器开始访问所有 JS 和 React 框架代码,然后需要一两秒钟才能弄清楚接下来要渲染什么。
同样,YSlow 对如何优化这些东西有很多建议,但这是我的 2c。
编辑:添加详细信息以回答您的第一个问题。
正如我上面提到的,JS 只是问题的一部分。渲染时间的总和将包括下载和解析所有内容(包括 CSS 等)所需的总时间。例如,在 Chrome 调试工具中查看它似乎需要大约 300 毫秒才能下载 html 并进行足够的解析以便调用下一个资源。在我的浏览器中,下一个两个是您的主要 css 和 logo.png。在大约 800 毫秒时,您的徽标已完成下载,并且几乎立即呈现。在 html 下载完成时,第一个 js 脚本开始下载(我不认为关闭 JS 会阻止这种情况发生,尽管它可能会阻止解析发生;我从未测试过) .在大约 700 毫秒的某个地方,您 开始 拉下您正在使用的字体集,看起来它们在 1 秒左右完成下载。在那之后大约 200 毫秒出现您的第一个文本,所以我猜测提取和解析字体文件就是阻碍的原因(当它们与其他资源一起排队时)。