报告的问题:
- 我们的移动网站上的 iPhone 用户的页面重新加载次数和“重复出现问题……”错误页面有所增加。
指标数据:
- 在移动网站上输入时从我们的搜索栏实时结果进行的调用中,95% 的 API 超时错误来自 iPhone 设备,而只有 40% 的流量来自 iPhone 用户。
研究:
- 我们的搜索栏会在用户启动搜索之前进行实时搜索,从而触发页面加载。
- 实时搜索的ajax调用在响应之前被放弃,并且在网络历史记录中显示没有响应。
- 实时搜索呼叫一旦启动后通常会在 150-200 毫秒内得到响应。
- 其他论坛帖子和问题描述了过去 Safari 的类似行为。
- Apple 于 9 月 16 日向公众发布了 iOS 18,这与报告的错误时间一致。
我们尝试使用
async: true
修改ajax调用,但在指标监控中仍然看到相同的API超时错误。
我们不能使用中止,因为调用的域与我们的网站不同。
我在 stackoverflow 上只发现了一些其他问题,具体涉及 Safari 如何处理没有响应的废弃 ajax 调用。典型的快速修复不起作用,而且自 iOS 18 发布以来,这个问题已经爆发,所以我觉得这需要一个专门的问题。