HTTP Performance Lab에 오신 것을 환영합니다
++ HTTP/1.1, HTTP/2, HTTP/3의 성능 차이를 실제로 측정하고 비교할 수 있는 + 전문적인 테스트 환경입니다. 다양한 리소스를 통해 실제 웹 사이트 환경을 시뮬레이션합니다. +
+diff --git a/optimization-http2/css/style1.css b/optimization-http2/css/style1.css new file mode 100644 index 0000000..ddbc178 --- /dev/null +++ b/optimization-http2/css/style1.css @@ -0,0 +1,49 @@ +/* style1.css - Base styles and typography */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'pretendard', sans-serif; + line-height: 1.6; + color: #333; + background-color: #ffffff; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 20px; +} + +.section { + padding: 80px 0; + opacity: 0; + transform: translateY(30px); + transition: all 0.8s ease; +} + +.section.visible { + opacity: 1; + transform: translateY(0); +} + +.section-title { + font-size: 2.5rem; + font-weight: 700; + color: #2563eb; + margin-bottom: 20px; + text-align: center; +} + +.section-description { + font-size: 1.1rem; + color: #64748b; + margin-bottom: 30px; + text-align: center; + max-width: 800px; + margin-left: auto; + margin-right: auto; +} diff --git a/optimization-http2/css/style2.css b/optimization-http2/css/style2.css new file mode 100644 index 0000000..2ab68f2 --- /dev/null +++ b/optimization-http2/css/style2.css @@ -0,0 +1,69 @@ +/* style2.css - Header and navigation styles */ +.header { + background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1000; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); +} + +.navbar { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 2rem; + max-width: 1200px; + margin: 0 auto; +} + +.nav-brand { + font-size: 1.8rem; + font-weight: 700; + color: white; + text-decoration: none; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.brand-icon { + width: 32px; + height: 32px; + filter: brightness(0) invert(1); +} + +.nav-menu { + display: flex; + list-style: none; + gap: 2rem; +} + +.nav-menu a { + color: white; + text-decoration: none; + font-weight: 500; + transition: color 0.3s ease; + padding: 0.5rem 1rem; + border-radius: 5px; + display: flex; + align-items: center; + gap: 0.5rem; +} + +.nav-icon { + width: 16px; + height: 16px; + filter: brightness(0) invert(1); +} + +.nav-menu a:hover { + background-color: rgba(255, 255, 255, 0.2); + color: #e0f2fe; +} + +/* Add top margin to body to account for fixed header */ +body { + margin-top: 70px; +} \ No newline at end of file diff --git a/optimization-http2/css/style3.css b/optimization-http2/css/style3.css new file mode 100644 index 0000000..2852dc2 --- /dev/null +++ b/optimization-http2/css/style3.css @@ -0,0 +1,114 @@ +/* style3.css - Introduction section styles */ +.intro-section { + background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); + min-height: 100vh; + display: flex; + align-items: center; +} + +.content-wrapper { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 4rem; + align-items: center; +} + +.intro-icons { + display: flex; + gap: 1rem; + margin-bottom: 1rem; + justify-content: flex-start; +} + +.intro-icon { + width: 48px; + height: 48px; + filter: brightness(0) saturate(100%) invert(27%) sepia(98%) saturate(1896%) hue-rotate(215deg) brightness(91%) contrast(94%); +} + +.text-content .section-title { + text-align: left; + font-size: 3rem; + margin-bottom: 1.5rem; +} + +.text-content .section-description { + text-align: left; + font-size: 1.2rem; + margin-bottom: 2rem; +} + +.feature-highlights { + display: flex; + gap: 2rem; + margin-bottom: 2rem; + flex-wrap: wrap; +} + +.highlight-item { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 1rem; + background: rgba(59, 130, 246, 0.1); + border-radius: 20px; + border: 1px solid rgba(59, 130, 246, 0.2); +} + +.highlight-icon { + width: 20px; + height: 20px; + filter: brightness(0) saturate(100%) invert(27%) sepia(98%) saturate(1896%) hue-rotate(215deg) brightness(91%) contrast(94%); +} + +.highlight-item span { + font-size: 0.9rem; + color: #2563eb; + font-weight: 500; +} + +.cta-button { + background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); + color: white; + border: none; + padding: 15px 30px; + font-size: 1.1rem; + font-weight: 600; + border-radius: 8px; + cursor: pointer; + transition: all 0.3s ease; + box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3); + display: flex; + align-items: center; + gap: 0.5rem; +} + +.button-icon { + width: 20px; + height: 20px; + filter: brightness(0) invert(1); +} + +.cta-button:hover { + transform: translateY(-2px); + box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4); +} + +.image-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; +} + +.grid-image { + width: 100%; + height: 150px; + object-fit: cover; + border-radius: 8px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + transition: transform 0.3s ease; +} + +.grid-image:hover { + transform: scale(1.05); +} \ No newline at end of file diff --git a/optimization-http2/css/style4.css b/optimization-http2/css/style4.css new file mode 100644 index 0000000..fc4c724 --- /dev/null +++ b/optimization-http2/css/style4.css @@ -0,0 +1,258 @@ +/* style4.css - Features and performance section styles */ +.features-section { + background-color: #ffffff; +} + +.section-header { + display: flex; + align-items: center; + justify-content: center; + gap: 1rem; + margin-bottom: 3rem; +} + +.section-icon { + width: 40px; + height: 40px; + filter: brightness(0) saturate(100%) invert(27%) sepia(98%) saturate(1896%) hue-rotate(215deg) brightness(91%) contrast(94%); +} + +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 2rem; + margin: 3rem 0; +} + +.feature-card { + background: white; + border-radius: 12px; + padding: 2rem; + text-align: center; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); + transition: all 0.3s ease; + border: 1px solid #e2e8f0; +} + +.feature-card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); +} + +.feature-header { + position: relative; + margin-bottom: 1.5rem; +} + +.feature-icon { + position: absolute; + top: 10px; + right: 10px; + width: 32px; + height: 32px; + background: white; + border-radius: 50%; + padding: 6px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + filter: brightness(0) saturate(100%) invert(27%) sepia(98%) saturate(1896%) hue-rotate(215deg) brightness(91%) contrast(94%); + z-index: 1; +} + +.feature-image { + width: 100%; + height: 200px; + object-fit: cover; + border-radius: 8px; +} + +.feature-card h3 { + font-size: 1.3rem; + color: #2563eb; + margin-bottom: 1rem; + font-weight: 600; +} + +.feature-card p { + color: #64748b; + line-height: 1.6; + margin-bottom: 1rem; +} + +.feature-tags { + display: flex; + justify-content: center; + gap: 0.5rem; +} + +.tag { + display: flex; + align-items: center; + gap: 0.3rem; + background: rgba(59, 130, 246, 0.1); + color: #2563eb; + padding: 0.3rem 0.8rem; + border-radius: 15px; + font-size: 0.8rem; + font-weight: 500; +} + +.tag-icon { + width: 14px; + height: 14px; + filter: brightness(0) saturate(100%) invert(27%) sepia(98%) saturate(1896%) hue-rotate(215deg) brightness(91%) contrast(94%); +} + +.tools-section { + margin: 4rem 0; + text-align: center; +} + +.tools-title { + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + font-size: 1.5rem; + color: #2563eb; + margin-bottom: 2rem; +} + +.tools-icon { + width: 32px; + height: 32px; + filter: brightness(0) saturate(100%) invert(27%) sepia(98%) saturate(1896%) hue-rotate(215deg) brightness(91%) contrast(94%); +} + +.tools-grid { + display: flex; + justify-content: center; + gap: 3rem; + flex-wrap: wrap; +} + +.tool-item { + display: flex; + flex-direction: column; + align-items: center; + gap: 0; +} + +/* style4.css - Features and performance section styles */ +.features-section { + background-color: #ffffff; +} + +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 2rem; + margin: 3rem 0; +} + +.feature-card { + background: white; + border-radius: 12px; + padding: 2rem; + text-align: center; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); + transition: all 0.3s ease; + border: 1px solid #e2e8f0; +} + +.feature-card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); +} + +.feature-image { + width: 100%; + height: 200px; + object-fit: cover; + border-radius: 8px; + margin-bottom: 1.5rem; +} + +.feature-card h3 { + font-size: 1.3rem; + color: #2563eb; + margin-bottom: 1rem; + font-weight: 600; +} + +.feature-card p { + color: #64748b; + line-height: 1.6; +} + +.additional-images { + display: flex; + justify-content: center; + gap: 2rem; + margin-top: 3rem; +} + +.additional-image { + width: 200px; + height: 150px; + object-fit: cover; + border-radius: 8px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); +} + +/* Performance Section */ +.performance-section { + background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%); +} + +.performance-content { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 4rem; + align-items: center; +} + +.performance-text .section-title { + text-align: left; +} + +.performance-text .section-description { + text-align: left; +} + +.performance-stats { + display: flex; + gap: 2rem; + margin-top: 2rem; +} + +.stat-item { + text-align: center; +} + +.stat-number { + display: block; + font-size: 1.2rem; + font-weight: 700; + color: #2563eb; +} + +.stat-label { + display: block; + font-size: 0.9rem; + color: #64748b; + margin-top: 0.5rem; +} + +.performance-images { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; +} + +.perf-image { + width: 100%; + height: 120px; + object-fit: cover; + border-radius: 8px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); +} \ No newline at end of file diff --git a/optimization-http2/css/style5.css b/optimization-http2/css/style5.css new file mode 100644 index 0000000..bb51555 --- /dev/null +++ b/optimization-http2/css/style5.css @@ -0,0 +1,145 @@ +/* style5.css - Contact section and footer styles */ +.contact-section { + background-color: #ffffff; +} + +.contact-content { + display: grid; + grid-template-columns: 2fr 1fr; + gap: 4rem; + align-items: start; +} + +.contact-info .section-title { + text-align: left; +} + +.contact-info .section-description { + text-align: left; + margin-bottom: 2rem; +} + +.resource-categories { + display: grid; + gap: 2rem; +} + +.resource-category h4 { + display: flex; + align-items: center; + gap: 0.5rem; + color: #2563eb; + font-size: 1.2rem; + margin-bottom: 1rem; +} + +.category-icon { + width: 24px; + height: 24px; + filter: brightness(0) saturate(100%) invert(27%) sepia(98%) saturate(1896%) hue-rotate(215deg) brightness(91%) contrast(94%); +} + +.resource-list { + list-style: none; + margin-left: 2rem; +} + +.resource-list li { + padding: 8px 0; + border-bottom: 1px solid #e2e8f0; + color: #475569; + font-weight: 500; + position: relative; + padding-left: 30px; +} + +.resource-list li:before { + content: "✓"; + position: absolute; + left: 0; + color: #3b82f6; + font-weight: bold; +} + +.contact-images { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.contact-image { + width: 100%; + height: 200px; + object-fit: cover; + border-radius: 8px; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); +} + +/* Footer */ +.footer { + background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%); + color: white; + padding: 3rem 0; + text-align: center; +} + +.footer-content { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; +} + +.footer-content p { + color: #cbd5e1; + font-size: 0.95rem; +} + +.footer-content p:first-child { + font-weight: 600; + color: white; + font-size: 1.1rem; +} + +/* Responsive Design */ +@media (max-width: 768px) { + .content-wrapper, + .performance-content, + .contact-content { + grid-template-columns: 1fr; + gap: 2rem; + } + + .image-grid { + grid-template-columns: repeat(2, 1fr); + } + + .performance-images { + grid-template-columns: 1fr; + } + + .nav-menu { + display: none; + } + + .section-title { + font-size: 2rem; + } + + .text-content .section-title { + font-size: 2.2rem; + } + + .feature-highlights { + flex-direction: column; + gap: 1rem; + } + + .tools-grid { + gap: 1.5rem; + } + + .intro-icons { + justify-content: center; + } +} \ No newline at end of file diff --git a/optimization-http2/index.html b/optimization-http2/index.html index e69de29..40b0497 100644 --- a/optimization-http2/index.html +++ b/optimization-http2/index.html @@ -0,0 +1,292 @@ + + +
+ + ++ HTTP/1.1, HTTP/2, HTTP/3의 성능 차이를 실제로 측정하고 비교할 수 있는 + 전문적인 테스트 환경입니다. 다양한 리소스를 통해 실제 웹 사이트 환경을 시뮬레이션합니다. +
+
+
+
+
+
+
+
+ Lighthouse와 DevTools를 활용한 정확한 성능 측정
+ +
+ HTTP/1.1, HTTP/2, HTTP/3 프로토콜별 성능 비교
+ +
+ CSS, JS, 이미지, 폰트 등 다양한 리소스 로딩 분석
+ +
+ 병렬 연결, 압축, 캐싱 전략 테스트
+ +
+
+
+ + 실제 테스트 환경에서 측정된 HTTP 프로토콜별 성능 데이터를 확인하세요. + 각 프로토콜의 장단점과 최적화 전략을 비교 분석할 수 있습니다. +
+
+
+
+
+
+ + 이 테스트 페이지는 다양한 리소스를 포함하여 실제 웹사이트와 + 유사한 환경을 제공합니다. Network 탭에서 로딩 패턴을 확인해보세요. +
+
+
+