{"componentChunkName":"component---node-modules-stvad-gatsby-theme-garden-src-templates-roam-page-js","path":"/Web-Vitals","result":{"data":{"roamPage":{"title":"Web Vitals","childMdx":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", {\n    \"id\": \"web-vitals\"\n  }, \"Web Vitals\"));\n}\n;\nMDXContent.isMDXComponent = true;","outboundReferences":[],"inboundReferences":[{"__typename":"Mdx","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Block = makeShortcode(\"Block\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(Block, {\n    id: \"ne9gC47J6\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"\", mdx(\"a\", {\n      parentName: \"p\",\n      \"href\": \"/Web-Vitals\",\n      \"title\": \"Web Vitals\",\n      \"className\": \" internal-link\"\n    }, \"Web Vitals\"), \" \\uC911 LCP\\uAC00 \\uD3C9\\uADE0\\uC801\\uC73C\\uB85C 44% \\uB2E8\\uCD95\")),\n    mdxType: \"Block\"\n  }));\n}\n;\nMDXContent.isMDXComponent = true;","parent":{"__typename":"RoamBlock","id":"3c5157a9-9866-5117-9120-b041d177325f","string":"[[Web Vitals]] 중 LCP가 평균적으로 44% 단축","fields":{"parentPage":{"title":"SLASH 22","fields":{"slug":"/SLASH-22"}},"slug":"/ne9gC47J6"}}},{"__typename":"Mdx","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Block = makeShortcode(\"Block\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(Block, {\n    id: \"FLDbC3A4a\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"SSR\\uC774\\uB77C\\uACE0 \\uD574\\uB3C4 \\uB370\\uC774\\uD130\\uB97C \\uAC00\\uC838\\uC624\\uB294 \\uC8FC\\uCCB4\\uC5D0 \\uB530\\uB77C \\uD1B5\\uACC4\\uAC00 \\uD06C\\uAC8C \\uB2EC\\uB77C\\uC9D0 \", mdx(\"a\", {\n      parentName: \"p\",\n      \"href\": \"/Web-Vitals\",\n      \"title\": \"hashtag_Web Vitals\",\n      \"className\": \" internal-link hashtag\"\n    }, \"Web Vitals\"), \"\")),\n    mdxType: \"Block\"\n  }, mdx(Block, {\n    id: \"BBUlthyz5\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"\\uB370\\uC774\\uD130\\uB97C \\uC11C\\uBC84\\uC5D0\\uC11C \\uAC00\\uC838\\uC624\\uAC8C \\uB418\\uBA74 TTFB\\uB294 \\uB192\\uC544\\uC9C0\\uB098 LCP=FCP\")),\n    mdxType: \"Block\"\n  }), mdx(Block, {\n    id: \"I8hhwi33q\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"\\uD074\\uB77C\\uC774\\uC5B8\\uD2B8\\uC5D0\\uC11C \\uAC00\\uC838\\uC624\\uAC8C \\uB418\\uBA74 TTFB\\uB294 \\uB0AE\\uC544\\uC9C0\\uB098 LCP>FCP\")),\n    mdxType: \"Block\"\n  })));\n}\n;\nMDXContent.isMDXComponent = true;","parent":{"__typename":"RoamBlock","id":"81a3edc3-47aa-5fb5-bbc1-d1d6cfb5f008","string":"SSR이라고 해도 데이터를 가져오는 주체에 따라 통계가 크게 달라짐 #[[Web Vitals]]","fields":{"parentPage":{"title":"June 17th, 2022","fields":{"slug":"/June-17th-2022"}},"slug":"/FLDbC3A4a"}}},{"__typename":"Mdx","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {};\n\nvar makeShortcode = function makeShortcode(name) {\n  return function MDXDefaultShortcode(props) {\n    console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n    return mdx(\"div\", props);\n  };\n};\n\nvar Block = makeShortcode(\"Block\");\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(Block, {\n    id: \"poRRkvXxp\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"TTFB\\uB294 Async SSR\\uC744 \\uCC44\\uD0DD\\uD55C \\uACBD\\uC6B0\\uAC00 \\uC544\\uB2C8\\uB77C\\uBA74 \\uAC70\\uC758 \\uD56D\\uC0C1 \\uB0AE\\uC74C \", mdx(\"a\", {\n      parentName: \"p\",\n      \"href\": \"/Web-Vitals\",\n      \"title\": \"hashtag_Web Vitals\",\n      \"className\": \" internal-link hashtag\"\n    }, \"Web Vitals\"), \"\")),\n    mdxType: \"Block\"\n  }, mdx(Block, {\n    id: \"tfU2il43u\",\n    content: mdx(React.Fragment, null, mdx(\"p\", null, \"\", mdx(\"a\", {\n      parentName: \"p\",\n      \"href\": \"/Remix\",\n      \"title\": \"Remix\",\n      \"className\": \" internal-link\"\n    }, \"Remix\"), \", \", mdx(\"a\", {\n      parentName: \"p\",\n      \"href\": \"/NextJS\",\n      \"title\": \"NextJS\",\n      \"className\": \" internal-link\"\n    }, \"NextJS\"), \" \\uB4F1\\uB4F1 \\uC720\\uBA85\\uD55C SSR \\uD504\\uB808\\uC784\\uC6CC\\uD06C\\uB4E4\\uC774 \\uCC44\\uD0DD\\uD55C \\uBC29\\uBC95\\uC774\\uAE30\\uB3C4\")),\n    mdxType: \"Block\"\n  })));\n}\n;\nMDXContent.isMDXComponent = true;","parent":{"__typename":"RoamBlock","id":"ed797cce-9120-5ac8-9d72-62d69459d5d2","string":"TTFB는 Async SSR을 채택한 경우가 아니라면 거의 항상 낮음 #[[Web Vitals]]","fields":{"parentPage":{"title":"June 17th, 2022","fields":{"slug":"/June-17th-2022"}},"slug":"/poRRkvXxp"}}}]},"fields":{"slug":"/Web-Vitals"}}},"pageContext":{"id":"1c992e00-5f3d-56e5-b750-90af0eee536e"}},"staticQueryHashes":["2131059104","2221750479","2468095761"]}