Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

서버에서 URL로 V1/V2 구분 가능하도록 개선 #365

Merged
merged 1 commit into from
Apr 22, 2024

Conversation

XiNiHa
Copy link
Contributor

@XiNiHa XiNiHa commented Mar 15, 2024

일단 패스


Concern points:

  • 세션 스토리지 활용하는 대신에 쿠키에다가 버전 정보를 박아서 URL에 ?v=를 인코딩하기 위해 여기저기 깊게 serverSystemVersion을 침투시킬 필요가 없이 할 수도 있을 것 같은데 이걸 이번 iteration에 구현할지
  • 지금 구현상 서버 내 프레임워크 컴포넌트(Preact)에 대해서는 프롭드릴링을 하도록 되어 있는데 AsyncLocalStorage 같은 거 사용할 방법 없을지....?

Copy link

vercel bot commented Mar 15, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
developers ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 22, 2024 8:08am

@@ -31,11 +32,15 @@ const parseSystemVersion = (value: unknown) => {

export const systemVersionSignal = signal(getInitialSystemVersion());
function getInitialSystemVersion() {
if (isServer) return "all";
if (isServer) return "v1"; // default
Copy link
Member

@CirnoV CirnoV Apr 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 그냥 v1으로 하기 보다는 Astro middleware 하나 만들어서 Context.url로 버전 구하고 globalThis에 할당해 둔 다음에 여기서 참조해서 사용하면 어떨까요?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

프롭 드릴링 했던 것도 astro 파일 내부에서 astro 런타임 API가 사용 가능하니까 getServerSystemVersion 함수 이용해서 하신걸로 보이는데, 제가 생각했을때는 Astro middleware에서 미리 Request 가로채서 활용하면 useServerFallback 없이 전역 signal만 사용해도 될 것 같아요

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전역 signal은 동시에 여러 요청을 처리하고 있을 때 요청 간에 async 컨텍스트가 섞이면서 올바르지 않은 값이 전달될 수 있어서.... 제대로 처리하려면 AsyncLocalStorage를 사용해야 하는데, 이거를 제대로 쓰려면 Astro를 패치해야 해서 당장 손대긴 좀 방대한 작업이 될 것 같아요

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 그런 구조였군요... 🥲

@XiNiHa XiNiHa mentioned this pull request Apr 22, 2024
3 tasks
@XiNiHa XiNiHa force-pushed the feat/server-side-system-version branch from 7afc1de to 18c09dd Compare April 22, 2024 08:05
@XiNiHa XiNiHa merged commit 8d17f51 into main Apr 22, 2024
3 checks passed
@XiNiHa XiNiHa deleted the feat/server-side-system-version branch April 22, 2024 08:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants