【问题标题】:Vue server side rendering performance issueVue服务器端渲染性能问题
【发布时间】:2020-04-22 02:26:21
【问题描述】:

我遇到了一个奇怪的问题。这是我渲染 vue 页面的代码。在我的本地机器上,这个页面的渲染时间大约是 50~80ms,但是,如果我并行访问页面,有时可能是 120ms 左右(可能是 200 个请求中的 5 次),但大多数时候,它仍然是50~80 毫秒。

但是,当我将代码部署到我们的生产 docker 时,这些 peek 时间越来越差,有时可以达到 1 秒,而且很多时候达到 500ms,性能很差。没有意义,请求负载不重,我们也有负载均衡。对于我们使用 EJS 渲染的类似页面,我们看不到这种窥视。 EJS和Vue使用的后端逻辑和服务都是一样的。

客户端渲染也是一样,症状类似。

有没有人知道什么样的原因会导致这个问题?

【问题讨论】:

    标签: vue.js rendering server-side-rendering


    【解决方案1】:

    首先做两件事:

    1- 如果可能,请使用灯塔进行快速测试,这将有助于确定问题所在。

    2- 检查控制台是否有任何错误和警告。

    如果没有有关您的代码的更多信息,我认为无法说出问题的确切原因。 然而,在搜索了一段时间后,我发现了一个article,作者遇到了同样的性能问题。

    This 是他的灯塔检查的结果。如您所见,他的网站在索引和内容全画方面存在缺陷;长话短说,他有一个无限循环和没有键的 v-for 循环。

    以下是一些关于如何更好地优化 vue 应用的提示:

    1. 应用 Vue 样式指南和 ESLint

    Vue 文档中有一个风格指南:https://vuejs.org/v2/style-guide/。 您可以找到四个规则类别。我们非常关心其中三个:

    Essential 规则防止我们出错, Recommendedstrongly recommended 保持最佳实践的规则——以提高代码的质量和可读性。 你可以使用 ESLint 来为你处理这些规则。您只需在 ESLint 配置文件中正确设置所有内容。

    1. 不要使用多个 v-if

    2. 不要在组件中编写 api 调用处理程序

    只需在组件逻辑中执行本地所需的操作。每个可能是外部的方法都应该分开,并且只在组件中调用,例如业务逻辑。

    1. 使用插槽而不是大量道具

    5.延迟加载路由

    1. 将 watcher 与 immediate 选项一起使用,而不是同时使用创建的 hook 和 watcher。

    在这里another article 了解如何改进您的 vue 应用程序。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 1970-01-01
      • 2018-12-13
      • 2021-07-21
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      相关资源
      最近更新 更多