故事的开始是这样的

在一个月黑风高的夜晚,秋名山小白依旧在写着bug,这次他想实现的是解决重复请求问题。其实这个问题解决方案很普通,小白准备使用AOP+Redis分布式锁。

一切都很愉快的进行着,问题是出现在测试阶段,(注:小白代码是对的)

问题呈现

小白理想得到的结果

然而现实是这样的

解决bug历程

这里很容易发现,理想得到的结果是当两个请求同时到达时,server只执行一个请求,然而这里两次都执行了。小白为了增加可视性,在controller里添加了十秒的延时,神奇的事情发生了,这两个请求一共执行了20s,先执行的请求执行结束,第二个请求才开始执行的。这让人就很蒙逼了。思想过于发散的小白,差点怀疑springbootcontroller层是不是串行执行。还好这种思维没过几秒钟,小白就清醒过来了,这是不可能的。检查了一下自己的代码逻辑后,小白把问题定位到了浏览器上。接下来,小白就用了不同的浏览器进行结果验证,答案是理想结果,那么现在问题就锁定在了Chrome浏览器上。现在开始抓包分析:

顺势进行分析灰色部分是啥

这里有个Stalled时间,查阅资料得到是停滞的意思。同样抓包手法在别的浏览器上没有该Stalled时间,这里猜想是Chrome浏览器优化问题。这里,经过科学上网得到结论。

问题描述:https://stackoverflow.com/questions/27513994/chrome-stalls-when-making-multiple-requests-to-same-resource

这里一切就真相大白了,因为小白因为勉强自己能看懂,这里就不翻译了。自己意会吧。

强烈建议

血的教训告诉我们,测试接口不要懒,PostMan了解一哈

我要接着去写bug了,拜拜!

bug历程——记一次由chrome浏览器Stalled优化缓存导致的请求bug相关推荐

  1. Chrome 浏览器 强制清空缓存

    Chrome 浏览器 强制清空缓存 1. 网页F12状态 2.刷新按钮上 鼠标右键 3.点击: 清空缓存并硬性重新加载

  2. IE浏览器下ajax缓存导致数据不更新的解决方法

    IE浏览器下ajax缓存导致数据不更新的解决方法 参考文章: (1)IE浏览器下ajax缓存导致数据不更新的解决方法 (2)https://www.cnblogs.com/xcsn/p/4745437 ...

  3. ajax浏览器操作发生异常,解决IE浏览器缓存导致AJAX请求数据异常

    IE10浏览器会把AJAX请求的数据都缓存下来,然后每次想去刷新数据时发现数据都是一样的,于是导致数据显示异常. 解决方法: 在页面 标签里,加上以下声明: 保存后,刷新页面,重新访问即可. 说明:最 ...

  4. chrome控制台如何把vw显示成px_chrome用不好,BUG改到老,这些chrome 浏览器使用技巧你需要掌握...

    前端工程师大部分工作成果需要在浏览器中查看,使用 chrome 浏览器的频率非常高.更好更有效率地使用 chrome,将 chrome 配置成趁手的浏览器,将极大提升编程效率.现将chrome浏览器的 ...

  5. Chrome浏览器插件Postman用法简介-Http请求模拟工具

    在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件 ...

  6. Chrome浏览器会重复发送两次请求,第2次还是空请求的原因与解决方法

    用ServerSocket搭建了一个服务器.用Chrome测试http请求, 却总是收到两次请求,很奇怪的是第二次请求是空,如下所示 收到一个请求:GET / HTTP/1.1 收到一个请求:null ...

  7. chrome 浏览器 https 不安全 导致密码不能自动保存

    参考 https://zhidao.baidu.com/question/392953253656295525.html 一开始都没注意到, 证书保存的按钮 在高级 证书设置中 直接导入该站证书 重启 ...

  8. 如何查看Chrome浏览器的页面缓存内容【详细教程】

    如何查看浏览器页面缓存内容--代码&控制台 知识调用 前言引入 控制台输入代码查看 在控制台application查看 知识调用 文章可能需要用到的知识

  9. chrome浏览器f12的network里的请求行变得很大的解决方案

    如题:上面这种请求行很大不适应,要改成小请求行,只需点击下面这个按钮来切换.

最新文章

  1. 安徽省计算机一级文化基础,计算机一级文化基础选择题
  2. 推送通知服务【WP7学习札记之十三】
  3. 二叉树中任意两个节点的距离
  4. JUnit简单使用教程
  5. Hadoop入门(十九)Mapreduce的最大值程序
  6. 我的Dojo中有一个Mojo(如何编写Maven插件)
  7. python基础技巧总结(一)
  8. 进一步了解 apt-get 的几个命令
  9. jQuery选择器总结[转]
  10. AngularJS的基础元素应用
  11. 单片机开发板抗干扰(转载于51hei单片机)
  12. 客户价值分析之RFM模型
  13. python登陆pc微信_GitHub - ccboby/WechatPCAPI: 微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。...
  14. MTTR、MTBF、MTTF、可用性、可靠性傻傻分不清楚?
  15. UVM基本介绍(UVM class hierarchy、验证平台、树状图)
  16. 网易MuMu模拟器 更改模拟器大小(iphone5为例)
  17. Qt中textEdit文本编辑区设置滚动条自动向下滑落
  18. ClickHouse(十四)ClickHouse技术分享ppt
  19. oh my posh安装(新版powerShell7/pwsh安装路径/oh my posh)
  20. Python培训脱产班和周末班

热门文章

  1. Nature子刊 | 大序列数据时代的原核生物分类学和命名法
  2. 书论67 徐渭《书论》
  3. 一个经典的ROC曲线绘制
  4. vue项目中集成layerUI
  5. 浅析【RIP路由信息协议】
  6. 免费logo创建器launchaco
  7. PP-OCR: 3.5M超轻量中英文OCR模型详解(四) 文本识别优化瘦身策略
  8. 司铭宇老师为西柏思别墅电梯培训《销售SPIN顾问式沟通技巧》内训
  9. Unity3D笔记十五 碰撞、移动
  10. http post提交数组