bug历程——记一次由chrome浏览器Stalled优化缓存导致的请求bug
故事的开始是这样的
在一个月黑风高的夜晚,秋名山小白依旧在写着bug,这次他想实现的是解决重复请求问题。其实这个问题解决方案很普通,小白准备使用AOP+Redis
分布式锁。
一切都很愉快的进行着,问题是出现在测试阶段,(注:小白代码是对的)
问题呈现
小白理想得到的结果
然而现实是这样的
解决bug历程
这里很容易发现,理想得到的结果是当两个请求同时到达时,server
只执行一个请求,然而这里两次都执行了。小白为了增加可视性,在controller
里添加了十秒的延时,神奇的事情发生了,这两个请求一共执行了20s
,先执行的请求执行结束,第二个请求才开始执行的。这让人就很蒙逼了。思想过于发散的小白,差点怀疑springboot
的controller
层是不是串行执行。还好这种思维没过几秒钟,小白就清醒过来了,这是不可能的。检查了一下自己的代码逻辑后,小白把问题定位到了浏览器上。接下来,小白就用了不同的浏览器进行结果验证,答案是理想结果,那么现在问题就锁定在了Chrome
浏览器上。现在开始抓包分析:
顺势进行分析灰色部分是啥
这里有个Stalled
时间,查阅资料得到是停滞的意思。同样抓包手法在别的浏览器上没有该Stalled
时间,这里猜想是Chrome浏览器优化问题。这里,经过科学上网得到结论。
问题描述:https://stackoverflow.com/questions/27513994/chrome-stalls-when-making-multiple-requests-to-same-resource
这里一切就真相大白了,因为小白因为勉强自己能看懂,这里就不翻译了。自己意会吧。
强烈建议
血的教训告诉我们,测试接口不要懒,PostMan
了解一哈
我要接着去写bug了,拜拜!
bug历程——记一次由chrome浏览器Stalled优化缓存导致的请求bug相关推荐
- Chrome 浏览器 强制清空缓存
Chrome 浏览器 强制清空缓存 1. 网页F12状态 2.刷新按钮上 鼠标右键 3.点击: 清空缓存并硬性重新加载
- IE浏览器下ajax缓存导致数据不更新的解决方法
IE浏览器下ajax缓存导致数据不更新的解决方法 参考文章: (1)IE浏览器下ajax缓存导致数据不更新的解决方法 (2)https://www.cnblogs.com/xcsn/p/4745437 ...
- ajax浏览器操作发生异常,解决IE浏览器缓存导致AJAX请求数据异常
IE10浏览器会把AJAX请求的数据都缓存下来,然后每次想去刷新数据时发现数据都是一样的,于是导致数据显示异常. 解决方法: 在页面 标签里,加上以下声明: 保存后,刷新页面,重新访问即可. 说明:最 ...
- chrome控制台如何把vw显示成px_chrome用不好,BUG改到老,这些chrome 浏览器使用技巧你需要掌握...
前端工程师大部分工作成果需要在浏览器中查看,使用 chrome 浏览器的频率非常高.更好更有效率地使用 chrome,将 chrome 配置成趁手的浏览器,将极大提升编程效率.现将chrome浏览器的 ...
- Chrome浏览器插件Postman用法简介-Http请求模拟工具
在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件 ...
- Chrome浏览器会重复发送两次请求,第2次还是空请求的原因与解决方法
用ServerSocket搭建了一个服务器.用Chrome测试http请求, 却总是收到两次请求,很奇怪的是第二次请求是空,如下所示 收到一个请求:GET / HTTP/1.1 收到一个请求:null ...
- chrome 浏览器 https 不安全 导致密码不能自动保存
参考 https://zhidao.baidu.com/question/392953253656295525.html 一开始都没注意到, 证书保存的按钮 在高级 证书设置中 直接导入该站证书 重启 ...
- 如何查看Chrome浏览器的页面缓存内容【详细教程】
如何查看浏览器页面缓存内容--代码&控制台 知识调用 前言引入 控制台输入代码查看 在控制台application查看 知识调用 文章可能需要用到的知识
- chrome浏览器f12的network里的请求行变得很大的解决方案
如题:上面这种请求行很大不适应,要改成小请求行,只需点击下面这个按钮来切换.
最新文章
- 安徽省计算机一级文化基础,计算机一级文化基础选择题
- 推送通知服务【WP7学习札记之十三】
- 二叉树中任意两个节点的距离
- JUnit简单使用教程
- Hadoop入门(十九)Mapreduce的最大值程序
- 我的Dojo中有一个Mojo(如何编写Maven插件)
- python基础技巧总结(一)
- 进一步了解 apt-get 的几个命令
- jQuery选择器总结[转]
- AngularJS的基础元素应用
- 单片机开发板抗干扰(转载于51hei单片机)
- 客户价值分析之RFM模型
- python登陆pc微信_GitHub - ccboby/WechatPCAPI: 微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。...
- MTTR、MTBF、MTTF、可用性、可靠性傻傻分不清楚?
- UVM基本介绍(UVM class hierarchy、验证平台、树状图)
- 网易MuMu模拟器 更改模拟器大小(iphone5为例)
- Qt中textEdit文本编辑区设置滚动条自动向下滑落
- ClickHouse(十四)ClickHouse技术分享ppt
- oh my posh安装(新版powerShell7/pwsh安装路径/oh my posh)
- Python培训脱产班和周末班