黑马点评,后端请求没问题,前端页面有时候请求超时,无响应数据?

失败的发现过程

你看上面那里本来是有图片的,有时就没有,右边那里失败,连响应码都没有

然后我多刷几次就变成了下面不行了

开始怀疑是请求超时的问题,可以询问群友,但是大家貌似都没发现问题

怎么会这样?

在接口测试工具这里无论我发送多少次,都没有出现问题

逐渐发现问题所在,解决问题!!!

询问了ai也没有找到问题。最后上浏览器查找,发现有一个通过在前端的ajax请求延长请求时间成功了,我也跟着把ajax方法请求的timeout改成10秒,最后竟然成功了

xml 复制代码
 <script>
    //写在这位置对吗 对的
    axios.defaults.timeout = 3000;//全局配置
    axios.defaults.withCredentials = true;//这句代码必须写吗  必须 携带cookie保持会话
    const app = new Vue({
      el: "#app",
      data: {
        isReachBottom: false,
        types: [], // 类型列表
        blogs: [], // 播客列表
        current: 1,// blog的页码
      },
      created() {
        // 查询类型
        this.queryTypes();
        this.queryHotBlogsScroll();
      },
      methods: {
        queryTypes() {
          axios.get("/shop-type/list")
            .then(({ data }) => {
              this.types = data;
            })
            .catch(err => {
              console("分类错误");
              this.$message.error(err);
            })
        },
        queryHotBlogsScroll() {
          axios.get("/blog/hot?current=" + this.current)
            .then(({ data }) => {
              data.forEach(b => b.img = b.images.split(",")[0]);
              this.blogs = this.blogs.concat(data);
            })
            .catch(err => {
              this.$message.error(err)
            })
        },
        addLike(b) {
          axios.put("/blog/like/" + b.id)
            .then(({ data }) => {
              this.queryBlogById(b)
            })
            .catch(err => {
              this.$message.error(err)
            })
        },
        queryBlogById(b) {
          axios.get("/blog/" + b.id)
            .then(({ data }) => {
              b.liked = data.liked;
              b.isLike = data.isLike;
            })
            .catch(() => {
              this.$message.error
              b.liked++;
            })
        },
        onScroll(e) {
          let scrollTop = e.target.scrollTop;
          let offsetHeight = e.target.offsetHeight;
          let scrollHeight = e.target.scrollHeight;
          if (scrollTop + offsetHeight > scrollHeight && !this.isReachBottom) {
            this.isReachBottom = true

            // 再次查询下一页数据
            this.current++;
            this.queryHotBlogsScroll();
          } else {
            this.isReachBottom = false
          }
        },
        toShopList(id, name) {
          location.href = "/shop-list.html?type=" + id + "&name=" + name
        },
        toBlogDetail(b) {
          location.href = "/blog-detail.html?id=" + b.id
        }
      }
    })
  </script>

仍然感觉没有彻底解决,想找优化方案

但是感觉还是很疑惑,为什么变得怎么慢了,查询一个hot新闻需要两秒多?

最后通过ai提示说可能是nginx的配置问题 我突然想起我在nginx的负载均衡配置设置了两个 后端端口,而我在idea只启动了一个端口 (- Nginx 配置了 upstream backend { 8081, 8082 },但仅启动了 8081。),导致50%的请求转发到未启动的8082端口,造成超时!!最后把idea 的8081和8082端口都启动了,成功解决!

总结

  • 超时直接结束:这是客户端(浏览器/Axios)的主动行为,需通过代码扩展重试逻辑。所以直接结束了这个方法,没有响应数据
  • 本次错误根源:Nginx 配置和后端实例数量不匹配,导致请求失败率高达 50%。
相关推荐
Pkmer3 小时前
类的封装性: 让门面设计模式来打开这扇门
后端·设计模式
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题】【Java基础篇】第35题:怎样声明一个类不会被继承?什么场景下会用
java·开发语言·后端·面试
升鲜宝供应链及收银系统源代码服务3 小时前
升鲜宝云仓供应链管理系统 数据库数据字典设计 (一)---升鲜宝生鲜配送供应链管理系统
java·生鲜配送源代码·供应链源代码·生鲜供应链源代码·企业erp源代码·云仓供应链管理系统
无限进步_3 小时前
【C++】AVL树完全解析:从平衡因子到四种旋转
c语言·开发语言·数据结构·c++·后端·算法·github
渐儿3 小时前
Claude Code 的 Hooks 系统
后端
Pkmer3 小时前
古法编程: 我要的是状态模式,策略模式不要误我大计
后端·设计模式
tenggouwa3 小时前
16GB Mac 同时开 3 个 Cursor 拯救我的mac
前端·后端
大厂数码评测员3 小时前
2026 年家庭菜谱记录工具怎么选:从功能边界和小程序代码实现看免费与付费差异
java·开发语言·apache
twc8293 小时前
从架构视角梳理全链路压测的核心业务链路
java·大数据·软件测试·架构·性能测试·全链路压测
ltl3 小时前
激活函数:让网络「弯下来」的非线性魔法
后端