-
Notifications
You must be signed in to change notification settings - Fork 27
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
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
d5df49e
to
d493b07
Compare
d493b07
to
7afc1de
Compare
@@ -31,11 +32,15 @@ const parseSystemVersion = (value: unknown) => { | |||
|
|||
export const systemVersionSignal = signal(getInitialSystemVersion()); | |||
function getInitialSystemVersion() { | |||
if (isServer) return "all"; | |||
if (isServer) return "v1"; // default |
There was a problem hiding this comment.
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에 할당해 둔 다음에 여기서 참조해서 사용하면 어떨까요?
There was a problem hiding this comment.
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만 사용해도 될 것 같아요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
전역 signal은 동시에 여러 요청을 처리하고 있을 때 요청 간에 async 컨텍스트가 섞이면서 올바르지 않은 값이 전달될 수 있어서.... 제대로 처리하려면 AsyncLocalStorage를 사용해야 하는데, 이거를 제대로 쓰려면 Astro를 패치해야 해서 당장 손대긴 좀 방대한 작업이 될 것 같아요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아 그런 구조였군요... 🥲
7afc1de
to
18c09dd
Compare
일단 패스
Concern points:
?v=
를 인코딩하기 위해 여기저기 깊게serverSystemVersion
을 침투시킬 필요가 없이 할 수도 있을 것 같은데 이걸 이번 iteration에 구현할지AsyncLocalStorage
같은 거 사용할 방법 없을지....?