Vuejs中的每一秒钟axios调用都很慢

时间:2020-06-09 08:07:10

标签: vuejs2 axios vuex

我正在将Vuejs 2.6.11与Vuex 3.2.0和axios v0.19.2配合使用,并且在这个stackoverflow问题中也报告了一个独特的问题:Every Second Vuex Commit to the same action is slow

我已经消除了后端的问题,因为我从Angular 1应用程序和其他地方调用了相同的后端端点,而在第一次调用后所有调用始终保持快速运行没有问题。

我还测试了axios调用,而没有直接在组件中使用vuex,但是我遇到了完全相同的问题。

下面是我本地组件中的axios调用。

 async getDataLocal() {
      // this.showCollapse = !this.showCollapse
      // this.$store.dispatch('getData', {TableId: this.TableId, ViewId: this.ViewId, PageNumber: this.PageNumber, PageSize: this.PageSize })
      await this.$axios
        .$get(
          '/scad/TablesV2/' +
            this.TableId +
            '/data?ViewId=' +
            this.ViewId +
            '&PageNumber=' +
            this.PageNumber +
            '&PageSize=' +
            this.PageSize
        )
        .then(
          response => {
            this.items = response
          },
          error => {
            reject(error)
          }
        )
    },

,这是Chrome中网络流量的结果。我打完电话大约相隔1秒。

enter image description here

下面是我的vuex动作的代码。

return new Promise((resolve, reject) => {
      let ParameterList = payload.ParameterList || {}
      vuexContext.commit('loading', true)
      this.$axios
        .$get(
          '/scad/tablesv2/' +
            payload.TableId +
            '/data.json?ViewId=' +
            payload.ViewId +
            '&PageNumber=' +
            payload.PageNumber +
            '&PageSize=' +
            payload.PageSize,
          {
            params: { ParameterList: payload.ParameterList },
            crossdomain: true,
            withCredentials: true
          }
        )
        .then(
          response => {
            const result = {
              TableId: payload.TableId,
              ViewId: payload.ViewId,
              PageNumber: payload.PageNumber,
              PageSize: payload.PageSize,
              data: response
            }
            vuexContext.commit('getData', result)
            resolve(result)
          },
          error => {
            vuexContext.commit('setError', error.response)
            reject(error)
          }
        )
      vuexContext.commit('loading', false)
    })

,这是Chrome中到同一终结点的网络流量。再相隔1秒 enter image description here

这是从有角度的1个应用到同一端点的网络流量。

enter image description here

我搜索了互联网,但找不到任何相关内容。

1 个答案:

答案 0 :(得分:0)

我在使用 axios 处理 vue.js 应用程序时遇到了同样的问题。

我发现延迟是由于在 Windows 操作系统上的基于 Chromium 的浏览器中使用 localhost。查看每个网络请求的详细信息时,您可以看到每隔一个 axios 请求都在执行 DNS 查找。

如果您将地址栏中的 localhost 替换为 127.0.0.1,延迟就会消失。