레거시 브라우저에서 Discourse가 로드되지 않음

저는 community(dot)jenkins(dot)io의 사용자입니다(죄송합니다, 링크는 2개만 게시할 수 있습니다). 관리자 중 한 명에 따르면 이 사이트는 공식 Discourse 그룹이 후원하는 Discourse 인스턴스를 사용한다고 합니다. 헤더/소스의 메타 태그에는 Discourse 2.9.0.beta2라고 표시됩니다.

이번 주 월요일과 수요일 사이 어딘가(2022-03-14/16)부터 사이트가 구형 Android Firefox 브라우저에서 더 이상 로드되지 않습니다. 구체적으로는 Firefox Android 68.11.0입니다. 이는 Waterfox, FireStick의 Silk 브라우저 등 다른 브라우저들의 핵심이기도 합니다. 처음 오는 곳인데, 여기에서도 로드가 되지 않습니다. 페이지가 몇 초 동안 데이터를 가져오는 것처럼 보이다가 이후에는 완전히 비어 있습니다. "데스크톱 사이트 요청"도 비어 있고, "소스 보기"는 무한한 공허함으로 이어집니다.

저는 Jenkins 사이트에서 이 문제를 보고했습니다며, 관리자는 "replaceAll이 Firefox 68에서 사용할 수 없기 때문"일 가능성이 높다고 지적했으며, Saucelabs의 증거에서 약 00:17초 지점에 에러 메시지가 나타나는 것을 보여주었습니다.

이번 달早些, JavaScript 변경으로 인해 StackOverflow 기능이 StackOverflow/Exchange 사이트에서 두 번째로 중단되었습니다(아래 링크). 12월에 한 번 깨졌다가 수정한 적이 있으며, 진심으로 그 변경 사항을 되돌려 기능을 복구해 주기를 바랍니다.

흥미롭게도, WINXP PC에서 FF 52.9.0 ESR을 실행해 보았더니 "이 사이트에서 작동하려면 브라우저가 너무 오래되었습니다"라는 배너가 뜨긴 했지만, 사이트는 정상적으로 로드되는 것처럼 보였습니다. 따라서 이는 상당히 구체적이고 특수한 문제인 것 같습니다.

Discourse 팀에게 어떤 변경 사항이 있었는지 검토하고, 이러한 호환성 문제를 완화할 방법이 있는지 요청하고 싶습니다. 영원히 모든 것을 지원할 수는 없으며, 특히 테스트 범위에 포함되지 않는 경우更是 그러하지만, 보고가 되고 수정이 명확하며 운영에 큰 영향을 주지 않는다면 이를 고려해 주셨으면 합니다. 모든 기능이 필요한 것은 아니며, 핵심 기능(최소 내용 읽기)만 작동해 주면 됩니다.

StackExchange 링크: meta(dot)stackexchange(dot)com/q/376694

10개의 좋아요

우리는 분명히 오래된 비지원 브라우저에서도 최소한 읽기 전용 뷰를 표시하기를 원합니다. 렌더링이 깨져서 흰색 페이지만 표시되는 것은 버그입니다.

이번 주 동안 이 회귀 문제를 확인해 보겠습니다.

8개의 좋아요

replaceAll은 iOS <= 13.3에서 지원되지 않습니다

이 PR은 해당 기능에 대한 감지 기능을 추가하고, 필요할 경우 기본 HTML 보기로 폴백하도록 합니다:

12개의 좋아요

3개의 게시글이 기존 주제에 병합되었습니다: Frontend on Prod Site Down – Ember/Test error

보고해 주셔서 감사합니다, @Ian_W :+1:

문제를 이제 수정했습니다. 이 주제는 하루 후 자동으로 닫힙니다.

4개의 좋아요

레거시 Firefox for Android에서는 부분적으로만 성공했습니다.

meta.discourse.org와 community.jenkins.io 양쪽 모두에서 WINXP PC에서 실행 중인 FF 52.9.0 ESR와 마찬가지로 “브라우저가 너무 오래되었습니다” 배너가 표시됩니다.

하지만 토픽은 보이지 않고 로고와 푸터[Home .. Privacy Policy]만 표시됩니다.

Jenkins 사이트에서는 카테고리, 카테고리 설명 및 “Topics” 수가 보이지만, 어떤 카테고리를 클릭해도 여전히 이슈가 표시되지 않습니다.

4개의 좋아요

1개의 좋아요

Firefox 40에서 meta.discourse.org의 구형 HTML 버전을 렌더링하도록 만들었습니다:

이것은 Firefox 77 이전의 모든 Firefox에서 발생해야 합니다.

3개의 좋아요

앞서 언급했듯이, 제 스크린샷은 Android 버전에서 가져온 것입니다. 사이트는 데스크톱 버전에서 정상적으로 작동하는 것으로 보입니다.

FF Android 브라우저에서 디버깅을 도울 수 있는 추가 정보를 어떻게 추출할 수 있는지 전혀 모르겠습니다.

3개의 좋아요

비추천 상태인 fennec Firefox 68.9를 휴대폰에 설치했는데, 지금은 정상적으로 작동하는 것 같습니다:

버그를 재현하는 과정에서 제가 놓치고 있는 부분이 있을까요? 아이디어가 있으신가요?

3개의 좋아요

음, 뭘 말해야 할지 모르겠네요. 공장 초기화한 Android 폰(기기가 오래되어서 7.0 버전)을 받아서 Firefox Android 68.11 APK를 다운로드하고 설치한 뒤 meta(.)discourse(.)org로 이동하면 ** 이전 스크린샷과 같은 화면이 나옵니다.

그다음부터는 이상해집니다. meta(.)discourse(.)org/t/ ** 로 가면 다음과 같은 메시지가 표시됩니다.

"Oops! That page doesn’t exist or is private.

하지만 “인기”(Popular)와 “최근”(Recent) 주제 목록은 표시되고, 이 주제도 볼 수 있습니다.
주제를 클릭하면 주제 제목과 “bug”, “pri-high” 태그는 보이지만 본문 내용은 보이지 않습니다.

**: 2개 링크 제한 게시글
(또한 UI를 통해 스크린샷을 업로드할 수 없어서, 답글을 통해 한 장씩 업로드해야 했습니다)

1개의 좋아요

1개의 좋아요

새 폰을 사기 전에 누군가 iPhone 6에서 discourse를 사용하는 해결책을 내놓을지 모르니 지켜보고 있습니다.

1개의 좋아요

아래에 설명한 것처럼 동일한 문제를 겪고 있습니다:

1개의 좋아요

iOS 13 미만 또는 Android에서 비추천(deprecated)된 Firefox Fennec의 경우, HTML 뷰를 표시해야 합니다.

하지만 HTML 뷰가 존재하지 않기 때문에 이를 실행하지 못하고 있습니다.

원인은 다음과 같습니다:

이 코드는 우리의 코드베이스에 영원히(?) 존재해 왔습니다.

HTML 뷰로 폴백할 수 있도록 크롤러 내용을 포함하는 것은 비용이 많이 들므로, 아마도 구형 Safari를 아래 설정에 추가하여

필요할 때만 처리되도록 하는 것이 좋을 것입니다.

다른 대안은 Babel에 replaceAll을 트랜스파일하도록 지시하거나, 충분히 좋은 폴리필을 찾는 것입니다.

cc @sam @david @gerhard

5개의 좋아요

제가 생각할 수 있는 다른 대안들:

  1. browser_update_user_agents를 완전히 제거하고, 모바일에서 이러한 브라우저로 렌더링할 콘텐츠를 가져오기 위해 IE6 호환 XHR 요청을 사용합니다. (모바일에서 자바스크립트가 비활성화된 상태는 이미 작동하지 않으므로)

  2. replaceAll을 폴리필(Polyfill)로 처리

  3. 크롤러용 콘텐츠를 무조건적으로 포함 (모바일에서도 포함)

  4. (1)과 같지만 설정을 미세 최적화(micro optimisation)로 유지하고, XHR로 폴백(fallback) 처리

저는 (1), (3), (4) 사이에서 고민 중입니다.

7개의 좋아요

3번은 언젠가 피할 수 없이 해야 할 일이라고 생각합니다. 제조사가 더 이상 지원하지 않는 모바일 기기의 수는 시간이 지날수록 계속 늘어날 테니까요. 템플릿을 채우는 과정에서 서버 부하가 약간 증가하고 모바일에서 HTML 크기가 커지긴 하지만, 제 생각에는 실행해야 합니다.

따라서 3번을 실행하되, 1번과 2번이 실현 가능한지 조사해 보자고 제안합니다.

5개의 좋아요

우리가 방향을 바꿔서 모바일 최적화를 특정 브라우저에서만 활성화하면, 우리에게 유입되는 모바일 트래픽의 95%에 대해 이 최적화를 유지하면서도 여전히 매우 안전할 수 있을까요?

3개의 좋아요