https://github.com/servo/servo/pull/24072 ๋ ๋์๋ฅผ ์์ ํ์ง๋ง ๊ทผ๋ณธ์ ์ธ ์ด์ ๋ ์ฌ์ ํ ๋ช ํํ์ง ์์ต๋๋ค.
์ฑ๋ฅ ๋ชฉ๋ก์ ์ง์ฐ์ง ์์ผ๋ฉด ๊ฒฐ๊ตญ ํญ๋ชฉ์ด ์ถ๊ฐ๋์ง๋ง ์ ๊ฑฐ๋์ง๋ ์์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ด์ง์์ ๋น ๋ฅด๊ฒ ์ด๋ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์๋ ์ํ๋ก ๊ทธ๋๋ก ๋จ์ ์์ ์ ์์ต๋๊น?
_ ์๋ ๋ https://github.com/servo/servo/pull/24072#issuecomment -525514036์ @asajeffrey๊ฐ ๊ฒ์ํ์ต๋๋ค.
ํด๋น PR์ ๋ค๋ฅธ ์๊ฒฌ๋ ์ฐธ์กฐํ์ญ์์ค.
์ฑ๋ฅ ํ ์ดํฌ๊ฐ ์์ ๋๊ธฐ์ด์ ์ ์ง๋๋ค๋ ์ด๋ก ์ ๊ทธ๋ด๋ฏํด ๋ณด์ ๋๋ค.
cc @asajeffrey @jdm ๋๋ ๊ทธ๊ฒ์ด ๊ทธ๋ด๋ฏํ๋ค๊ณ ์๊ฐํ๋ฉฐ, ๋ํ ์ด ํน์ ํ ๊ฒฝ์ฐ์ ์ผ์ด๋ ์ผ์ด ์๋๋ฉฐ ๋์ Performance
์์ ์ ๊ฑฐ๋์ง ์์๊ธฐ ๋๋ฌธ์ PerformanceObserver
๋์ถํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ https://github.com/servo/servo/blob/6297fa582ac4c870e4a8d16cd261da6ede14191d/components/script/dom/performanceobserver.rs#L131์ ํธ์ถํ์ง ์๋ ํ ์์ฒด์ ์ผ๋ก None
์ค์ ๋์ง ์์์ต๋๋ค.
๊ด์ฐฐ์๊ฐ ์ ์ฅ๋๋ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ฌ ์คํฌ๋ฆฝํธ์์ ํด๋น PerformanceObserverCallback
์ ์ํด์๋ง ์ ์ง๋๋๋ก ๊ด์ฐฐํ ์ ์์ต๋๋ค(์คํฌ๋ฆฝํธ๊ฐ ์ฝ๋ฐฑ์ ์ค์ ํด์ ํ๋ฉด ์ญ์ ๋ ๊ฒ์
๋๋ค).
๋ ์ดํด๋ด์ผ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค. PerformanceObserver
DOM ๊ฐ์ฒด๋ฅผ PerformanceObserverImpl
์์ ๋ถ๋ฆฌํ ์ ์์ผ๋ฉฐ ํ์๋ DOMPerformanceEntryList
๋ฐ ๊ธฐํ "๋ฐ์ดํฐ"์ ๊ฐ์ ํญ๋ชฉ์ ์ถ์ ํ๋ ๋ฐ๋ฉด, DOM ๊ฐ์ฒด๋ ์ฝ๋ฐฑ์ ๊ฐ์ธ๋ ๋ํผ์ผ ๋ฟ์
๋๋ค.
๊ทธ๋ฌ๋ฉด ์ ์ญ์ Impl
๋ํ ๊ฐ๋ ฅํ ์ฐธ์กฐ๋ฅผ ์ ์งํ ์ ์๊ณ ์คํฌ๋ฆฝํธ ์ฝ๋ฐฑ์ด None
์ค์ ๋๋ฉด ์ญ์ ๋๋ Weak<PerformanceObserver>
๋ฅผ ์ ์งํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ ์ญ์ https://github.com/servo/servo/pull/23637/files#diff -59d233642d0ce6d687484bdd009e1017R484์์ ๋ฉ์์ง ํฌํธ์ ๋ํด ์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ฃผ๊ธฐ์ ์ธ ์ฒดํฌํฌ์ธํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด์ https://gist.github.com/kanaka/119f5ed9841e23e35d07e8944cca6aa7 ์ ์ฝ๋๊ฐ ๋ชจ๋ ๊ด์ฐฐ์๋ฅผ ์์ฑํ๋์ง ์ค์ ๋ก ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ ์์ ๋ ผ๋ฆฌ๋ฅผ ๋ฌดํจํํ ์ ์์ต๋๋ค(์ ์ด๋ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๋ ๊ฐ์ง๋๋ ๋์ถ๊ณผ ๊ด๋ จํ์ฌ ). ์ข ๋ ์์ธํ ์ดํด๋ด์ผ ํ ๊ฒ์ ๋๋ค.
์, ์ต์ ๋ฒ ์ธํธ๊ฐ ์๋๋ผ๋ https://github.com/servo/servo/blob/39bd45529d6ef3eea8e0eeef77d0294e0db1b02c/components/script/dom/performance.rs#L244 ์์ ํญ๋ชฉ์ ๋ฒํผ๋งํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์๋ฅผ ๋ค์ด ๋ฐ์ ๋๋ง๋ค ์คํฌ๋ฆฝํธ๋ ํ์น ์์ต๋๋ค https://github.com/servo/servo/blob/7490dd6f0deafc8192126a88a8a6f75c100e5d71/components/script/network_listener.rs#L65
์๋ฅผ ๋ค์ด ์คํ์ผ์ํธ ๋ก๋์์ ์ฌ์ฉ(๋ฌธ์ ๋์ถ์ด ๋ฐ์ํ ๋๋ฒ๊ทธ ์คํฌ๋ฆฝํธ์ ์ฌ์ฉ): https://github.com/servo/servo/blob/799490a02e9bea575bf34c39f045ef0883539f05/components/script/stylesheet_loader.rs#L233
์์ฒด ํธ์ถ์ https://github.com/servo/servo/blob/9bba14cb438cf5ac08945bb8fbb5a0f31d43fcbe/components/net_traits/lib.rs#L260 ์์ ๊ฐ์ ธ์ต๋๋ค.
์ข์, ์ด https://github.com/servo/servo/pull/24109 ๋ ๋์์ ์ค์ ์์ธ์ ์์ ํ๊ณ Performance
๋ฅผ ์ ์ฒด์ ์ผ๋ก None
์ค์ ํ ์ด์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๊ฑฐํฉ๋๋ค.
์ฑ๋ฅ ๊ด์ฐฐ์๊ฐ ์์ฑ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๊ฐ์ง๋ ๋์์ ์์ธ์ ์ค์ ๋ก ๋ฒํผ์์ต๋๋ค.
์คํฌ๋ฆฝํธ๊ฐ Disconnect
๋ฅผ ํธ์ถํ์ง ์๋ ํ ๋์ถ๋๋ ์ฑ๋ฅ ๊ด์ฐฐ์ ๋ฌธ์ ๋ฅผ ๊ณ์ ์์ ํด์ผ ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ด์ด ๋ก๋๋ค. https://github.com/servo/servo/issues/24074#issuecomment -526026684๋ฅผ ์ฐธ์กฐ