iOS 有时在不同子域名之间导航时不会加载 CSS

似乎只发生在 iOS 设备上 - 有时外部链接会在同一窗口内打开,但 CSS 未加载。很奇怪,我甚至无法重现!

看起来像这样:

还在其他公共 Discourse 论坛上发现了报告:

既然之前有人报告过并已修复,我想知道这是否可能与主题或主题组件有关?感谢任何帮助。

3 个赞

当 CSS 加载失败时,网络日志中会显示哪些错误?

至于这是否是主题/组件问题,您是否尝试过安全模式?

1 个赞

不,仅仅因为我在过去两周内看到过几次这种行为,而且只发生在我的 iPhone 上,并且也从用户那里听到过同样的情况,但无法重现,看起来是随机的。

1 个赞

这看起来像是一个旧的 bug。我目前无法重现,所有链接的主题都至少有一年了。听起来像是一个没有更新的论坛。

2 个赞

谢谢,但它正在运行最新的测试版更新 :frowning:

那个错误修复了什么?我想知道是否有可能是一个组件或主题重新生成了这个错误?

1 个赞

我正在尝试再次捕获它,它似乎偶尔会发生——不确定如何重现。但它确实发生了,据我所知,只发生在 iOS 上。

1 个赞

我正在使用多个 iOS 设备,iPhone 15 Pro Max、iPad Air 第 5 代、MacBook Air M2,但我无法重现此问题 :thinking:

您使用的是什么型号的设备和 iOS 版本?

1 个赞

Personally, iPhone 12 with the latest iOS 17.4.

It only happens for links outside using html a href, but even then it happens occasionally only?

Would love to know what was the bug that was fixed - so perhaps I could try and trigger something to reproduce it :confused:

1 个赞

这些报告与 Discourse 论坛的 CSS 问题有何关联?第一个明确指出:

该论坛不受此问题影响

1 个赞

这似乎是相同的行为——它发生在从 Discourse 内部打开外部网站时。例如,从 meta.discourse.org 打开 https://discourse.org/。

那听起来不像是论坛引起的问题,如果外部网站也遇到了问题的话。

我也这么想,但似乎只有从论坛点击时才会发生这种情况,而且因为我找到了其他帖子,所以我想也许有人能对此有所了解——这可能是 iOS 的问题。如果每次都不加载 CSS,而只是偶尔加载 CSS,那就更容易了 :sweat_smile:

1 个赞

@Lilly 我想知道 discourse 如何处理 href,以及是否有针对 iOS 的特殊方法?这似乎是一个与 Safari 相关的问题,但它只发生在从 discourse 内部跳转到另一个域时。另一个域没有被加载,就好像 discourse 试图在本地加载请求页面的 HTML 一样。

我们已经尝试过强制 no-cache 策略并调整 www 前缀。似乎都没有效果。这正是这里提到的问题:

他们让主网站从他们的 community.URL.com 加载,这导致了同样的页面加载不完整。

提前感谢!

我们的 discourse 是主站点 (domain.com) 的一个子域 (here.domain.com)。

几个月以来,iPhone 用户一直反映,当从子域 (discourse) 点击链接返回主站点时,页面可能无法加载 CSS 或 JS,只加载 HTML,因此无法使用。

这种情况并非每次都发生,但足够频繁,以至于他们不得不刷新页面来修复。通过刷新,他们实际上仍然停留在 discourse 中,因此必须再次点击。

查看 nginx 的 access.log 文件,我们可以看到,出于某种原因,discourse 试图获取主域文件,而不是主域的索引。
Needless to say, discourse does not have these files and so the page is then broken.

以下是来自 nginx 的“access.log”的日志:

[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /js/cart/cart.js?v=0.32 HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 429 230 "https://here.domain.com/c/testing/17" - 0.000 "-" "-" "-" "-" "-" "-" "-"

[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /css/footer_and_header.css?v=1.13 HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 404 7963 "https://here.domain.com/c/testing/17" 0.019 0.019 "-" "-" "-" "-" "-" "-" "-"
[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /css/common/jssocials.css?v=0.03 HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 404 7968 "https://here.domain.com/c/testing/17" 0.020 0.020 "-" "-" "-" "-" "-" "-" "-"
[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /js/common/lightslider.js?v=0.14 HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 404 7980 "https://here.domain.com/c/testing/17" 0.020 0.020 "-" "-" "-" "-" "-" "-" "-"
[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /js/common/jssocials.js HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 404 7978 "https://here.domain.com/c/testing/17" 0.034 0.034 "-" "-" "-" "-" "-" "-" "-"

我们尝试使用 href 链接和 window.reload(),但问题仍然存在。再说一遍,这种情况只偶尔发生,而且只发生在 iPhone 用户身上。

有什么想法可以解释为什么会发生这种情况以及如何解决它?

1 个赞

这和你在这里描述的是同一个问题吗?

1 个赞

是的!需要合并 :sweat_smile:

我认为我们现在更好地理解了问题所在。

2 个赞

有什么团队成员有什么想法吗?@Lilly 我知道我们几个月前在这里讨论过——也许你有什么可以分享的见解?

我认为这和我第一篇帖子中分享的论坛网站是同一个问题。

我们注意到了一些奇怪的问题,例如这个。据我们所知,这一定是 Safari/WebKit 的一个 bug。这种“混合站点”渲染本不应该发生。我们已经向 WebKit 提交了报告。(抄送 @pmusaraj)

如果有人能找到一种一致的重现问题的方法,那几乎肯定有助于优先处理这个 bug。

6 个赞

有什么外部链接的变通方法吗?
HTML HREF 和 JS window.replace 的行为都一样 :frowning:
(我确信前进/后退按钮几乎不可能被覆盖)

1 个赞

遗憾的是,我没有解决此问题的想法。我尝试取消注册服务工作线程,以防这是冲突的原因,但没有效果。

目前,我已切换到本地的 Safari Technology Preview。它似乎没有这个问题,这可能表明 Webkit 的新版本已修复此问题。或者,这意味着具有全新缓存的全新浏览器没有问题……很难说。

我们将继续关注此问题并寻找修复方法,此问题影响了 Discourse 团队的许多人,并且出现在不同的平台(macOS、iOS、DiscourseHub 应用)上。不过,除了找到一个神奇的修复方法之外,我们在这里最好的做法是关注Webkit bug 报告,并在相关/有用时添加其他信息。

2 个赞