← 목록
기타 2026-06-26 4KB 읽기 5분

THE IRUM 로딩 속도 개선 + 가이드 작동 복구 + 돌아가기 버튼

개요

irum.crowny.org(THE IRUM) — (1) 로딩 느림 원인 진단·개선, (2) 가이드 페이지/4개 모드 실제 작동 검증·복구, (3) 4개 모드 진입 시 가이드로 돌아가기 버튼 추가. academy.crowny.org 포트 충돌도 진단(복구는 사용자 보류).

무엇을 했는지

1. 로딩 속도 — 원인 2가지 + 개선

  • 원인 A: PretendardVariable.woff2가 2.0MB, 다운로드 ~1.13초(모바일 수 초). swap은 이미 있어 텍스트는 즉시 표시되나 늦은 폰트 스왑 깜빡임.
  • 원인 B(치명): 정적 서빙에 캐시 헤더 전무 → 매 방문 2MB 폰트 재다운로드.
  • 개선:
  • server.js 정적 서빙에 Cache-Control 정책 추가: 폰트=max-age=31536000, immutable, 이미지=30일, css/js=1일, html=no-cache.
  • MIME 맵에 woff2/woff/ttf/otf/jpg/webp 추가 → 폰트 Content-Type: font/woff2(preload 매칭).
  • 랜딩 <head><link rel="preload" as="font" crossorigin> 추가 → HTML 파싱과 병렬 다운로드.
  • 결과: 재방문 시 2MB 재다운로드 0. 로컬 0.7ms 안정, 공개망 콜드 144ms→웜 62~70ms 안정.
  • 2. 가이드/4개 모드 실제 작동 검증·복구

    • 페이지 5종(랜딩/가이드/채널/포털/SPA) 전부 200, 참조 정적 리소스 전부 200(깨진 링크 0), 헤드리스 콘솔 에러 0.
    • API: guide/accounts·irum/channel·tenant/current·portal 정상.
    • 로그인 불일치 수정: SPA 로그인 폼 기본값이 작동 안 하는 won@theirum.kr였음 → 가이드 안내 계정 director@irum.test로 변경(폼 value + 하단 데모 힌트 둘 다). director/teacher 로그인 token 발급 정상 확인.

    3. 돌아가기 버튼 (4개 모드)

    • 채널(channel.html)·포털(report.html)·SPA(theirum/index.html)에 고정 "← 가이드로" 버튼 추가.
    • 게이팅: 가이드에서 진입한 경우(?from=guide)만 노출 → 실제 학부모·학생 직접 방문 시 숨김(테스트 가이드 노출 방지).
    • guide.html 계정 링크에 ?from=guide 자동 부착. 헤드리스로 노출/숨김 양쪽 검증.

    4. academy.crowny.org 포트 충돌 (진단 완료, 복구 보류)

    • 원인: crowny-services 프레임워크 manage.sh가 주석 처리된 registry 줄을 무시 안 함(.filter(Boolean)만) → # moved-to-own-server academy|9865|...를 실서비스로 파싱해 유령 인스턴스(PID 2369, SERVICE=#)를 9865에 띄움. IPv4로 academy.crowny.org를 가로채 일반 랜딩 반환.
    • 조치: registry.psv에서 academy 줄 완전 제거(주석 아님). 유령 종료는 공유 프로세스라 사용자 보류.
    • 복구법(미실행): kill 2369(외과적, 타 서비스 무영향) 후 launchctl kickstart -k com.crowny.academy로 dual-stack 재바인딩.

    관련 파일

    • /Users/ef/crowny-academy/server.js (Cache-Control 정책, MIME 폰트타입)
    • /Users/ef/crowny-academy/public-irum/index.html (폰트 preload)
    • /Users/ef/crowny-academy/public/channel.html (돌아가기 버튼)
    • /Users/ef/crowny-academy/public/portal/report.html (돌아가기 버튼)
    • /Users/ef/crowny-academy/public/theirum/index.html (돌아가기 버튼 + 로그인 기본값/힌트 director@irum.test)
    • /Users/ef/crowny-academy/public/guide.html (계정 링크 ?from=guide)
    • /Users/ef/crowny-services/registry.psv (academy 줄 제거)

    검증

    • 폰트 Content-Type: font/woff2 + Cache-Control: public, max-age=31536000, immutable 확인
    • 랜딩 preload 서빙 확인, 5페이지 200, 정적 리소스 전부 200, 콘솔 에러 0
    • 로그인: director@irum.test/irum2026director → success+token, SPA value/힌트 일치
    • 돌아가기 버튼: ?from=guide시 display:inline-block, 미부착시 display:none (헤드리스)
    • 헤드리스 스크린샷: SPA 로그인(director 기본값+골드+돌아가기 버튼), 모바일 랜딩(프리미엄 렌더)

    잔여 이슈

    • academy.crowny.org 포트 충돌 복구 미실행(사용자 보류). registry는 정리됨 — 유령 PID 2369만 치우고 academy 재시작하면 복구.
    • manage.sh registry 파서 # 주석 미필터 = 잠재 버그(다른 주석 줄도 서비스로 오인 가능). 차후 grep -v '^#' 추가 권장.
    • 폰트 추가 경량화(서브셋)는 pyftsubset 부재로 미실행 — 캐시로 재방문은 해결, 첫 방문 2MB는 잔존.