问题描述
我们的通用链接已经运行了很长时间。今天我添加了一个 AASA 文件的路径(我们称之为 sub2)。应用程序无法识别该路径,即使在重新安装后也是如此。
当我调试时,我注意到 applinks 服务正在获取文件,但请求没有进入我们的服务器。该服务确实获取了旧的 AASA 文件,因此似乎苹果的 CDN 正在缓存此文件。
调试:
-
AASA 文件有效:使用 Branch Validator 以及 Apple's appsearch-validation-tool 中的新 URL 进行测试
{ "applinks": { "apps": [],"details": [ { "appID": "redacted","paths": [ "/main/*","/sub1/*","/sub2/*","/pagex-*" ] } ] },"activitycontinuation": { "apps": [ "redacted" ] } }
Apple tool: tested https://redacteddomain/sub2/something Link to Application: Passed Universal true ...
-
文件没有缓存在我们这边/Cloudflare:上面的验证器确认了这一点,但为了确保我也清除了缓存
-
Beginning data task AASA-64DCD3xx-xxxxx { domain: xx….xx,bytes: 0,route: cdn }
-
在 Iphone 上创建了一个 sysdiagnose 文件,它显示 AASA 文件是在这个时间戳获取的,但内容是旧内容:
Service: applinks App ID: (redacted) App Version: 2.3.4 App PI: <LSPersistentIdentifier 0x101579cc0> { v = 0,t = 0x8,u = 0x11c0,db = 49C449xx-xxxx,{length = 8,bytes = 0xc011000000000000} } Domain: (redacted) Patterns: {"/":"/main/*"},{"/":"/sub1/*"},{"/":"/pagex*"} User Approval: unspecified Site/Fmwk Approval: approved Flags: Last Checked: 2021-07-13 18:45:00 +0000 Next Check: 2021-07-18 18:36:18 +0000
Apple 是否有效地缓存了文件,这是因为我们提供了错误的缓存标头吗?如何测试他们的 CDN,这些 url 是公开的还是我可以在日志中找到它们?有没有办法在他们身边强制清除?
更新: 发现我们可以使用 url https://app-site-association.cdn-apple.com/a/v1/yourdomain.com
直接查询 CDN=> 此请求返回旧文件,而原始文件(如 Apple-From 标头中所述)更新! 然而,根据 Age 标题,该文件只有几分钟的历史..
更新2: 问题终于解决了,现在只能猜测CDN缓存刷新了。我已经确保我们的服务器现在发送一个 Cache-Control: no-store 标头,这似乎使 Apple CDN 现在将其缓存了一个小时(max-age:3600),但在那一小时之后它会有效地刷新。>
请注意,在突然解决之前,CDN 返回的文件年龄只有几分钟,最大年龄为 1800,所以我仍然很不清楚为什么它在服务器 40 小时后没有提供新内容文件已更新。
至少对于以后遇到类似问题的人来说,CDN url 是一个很好的调试起点:https://app-site-association.cdn-apple.com/a/v1/yourdomain.com
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)