networking - Chrome 中的旧主机地址
问题描述
我正在跟踪我们的 Web 应用程序的一个问题,即我们网站域的 CNAME 记录交换很长时间没有被 Chrome 接收,远远超过了 DNS 记录的 300 秒 TTL。Chrome 检查器网络选项卡中报告的对我们服务器的所有 XHR 请求的远程地址已过时。
如果我将 XHR 请求复制为 curl 并在终端中运行它,那么我可以确认它使用新交换到的域的 IP 地址,正如预期的那样。nslookup 也报告相同的地址,所以我的本地 DNS 缓存似乎很好。
在 Chrome 的 netlog 查看器(弹射器)中,我可以看到我们网站的域在 DNS 缓存中有一个过期的条目,其 TTL 设置为 10 秒。我还可以看到条目过期后发出的请求很好,所以 Chrome 似乎根本没有检查缓存!
奇怪的是,当我刷新 chrome://net-internals/#sockets 上的空闲套接字时,主机解析器确实会作为 SSL 握手的一部分触发,并获取新的 IP 地址。
我的感觉是这是我们的 Web 应用程序正在做一些事情来导致这种奇怪的行为。我检查了我们的另一个网站,但无法重现该问题。我以为我们可能会在某个地方挂起连接,但我们没有使用 websockets,而且我看不到任何其他挂起的网络请求。
非常感谢任何帮助!
解决方案
Chrome 在本地磁盘缓存中无限缓存 301 重定向。我不确定这是否能解决您的问题,但请通过清除本地磁盘缓存尝试一下。
以下是步骤:
- 打开开发工具
- 在网络选项卡上选中“禁用缓存”复选框
- 保持Devtool打开并重新加载页面。
检查 IP 并取消选中复选框上的禁用缓存。
推荐阅读
- python - 列和 JSONB 数据之间的 SQLAlchemy 关系连接
- javascript - NodeJS ReferenceError:使用支持颜色包时未定义要求
- gitlab - GitLab CICD 的工作流程中未设置变量
- netlogo - 是否可以要求代理离开代理集而不依赖于 NetLogo 中的变量?
- c# - 仅将值与字符串的子集匹配
- python - 如何运行集线器拉取 docker 映像设置环境变量
- html - 在 Ionic 中,我想水平显示日期时间选择器
- ruby - 如何动态创建局部变量和全局变量?
- c# - 构建项目后,WCF 方法被调用 2 次
- excel - 数据透视表中显示错误的周数