일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 카프카
- kafka
- 푸시 번역
- JPA
- php
- 푸시
- Push
- 웹사이트성능
- graphql
- 웹사이트최적화기법
- 도메인 주도 개발
- git
- 자바스크립트
- nginx
- 성능
- Java
- 카프카 트랜잭션
- GCM
- 페이스북 번역
- gcm 푸시 번역
- nginx설치
- APNS
- nginx설정
- notification
- GCM 번역
- Design Pattern
- 웹사이트 성능
- ddd
- 디자인패턴
- Today
- Total
간단한 개발관련 내용
[웹사이트최적화기법][Chapter11] 규칙11 : 리다이렉트를 피하라. 본문
Chapter 11. 리다이렉트를 피하라.
리다이렉트를 사용자를 한 URL에서 다른 URL로 다시 보내는 것을 말한다. HTML문서 모두 요청하기도 하며, 페이지 안에서 구성요소를 요청할 때도 사용된다. 그리고 리다이렉트를 사용하는 이유는 다양하다. 리다이렉트에 대해 기억해 두어야 할 중요한 점은 리다이렉트는 페이지를 더 느리게 만든다는 점이다.
1. 리다이렉트 타입.
웹 서버가 브라우저로 리다이렉트를 반환할 경우 그 응답은 3xx 범위의 상태 코드를 갖게 된다. 이 값은 HTTP 요청을 완수하기 위해서는 user agent 가 추가적으로 무언가를 해야 한다는 것을 나타낸다. 301,302 가 주로 사용되며 307까지 정의되어 있다. meta tag 나 document.location을 이용하여 리다이렉트 할 수 있으며, 리다이렉트를 꼭 해야 한다면 HTTP 의 3xx 상태 코드를 이용하여 처리하는 방법을 추천한다.(뒤로가기 버튼의 비활성화를 위해서-)
- Use standard redirects : http://www.w3.org/QA/Tips/reback
- php 의 경우 header 로 처리하면 됨.
2. 리다이렉트가 성능에 미치는 영향.
리다이렉트가 완료되고 HTML 문서가 다운로드되기 전까지는 브라우저 화면에 아무것도 보이지 않는다. 리다이렉트를 HTML 문서 자체의 다운로드를 지연시키기 때문에 가장 안 좋다고 할 수 있다.
3. 리다이렉트의 대안.
ㄱ. 주소 뒤에 슬래시(/)를 빼는 것.
웹 사이트에 여러 하위 디렉토리가 있고 오토인덱싱 기능을 이용한다면 웹 사이트 사용자가 원하는 페이지로 이동하기 위해 리다이렉트를 거칠 가능성이 높다고 할 수 있다. 아파치 등의 웹서버에서 리다이렉트를 피하려면 Alias로 상대주소를 사용하면 된다.
ㄴ. 웹 사이트 연결.
Alias, mod_rewrite, DirectorySlash 는 URL 안에 추가적으로 핸들러나 파일 이름과 같은 항목이 필요하지만 간단하게 구현할 수 있다. 도메인 이름이 다르다면 CNAME을 이용해서 두 개의 호스트 이름을 하나의 같은 서버로 보낼 수 있다.
ㄷ. 내부 트래픽 추적.
리다이렉트를 이용하여 트래픽 추적을 했던 부분을 REFERER 로그를 이용하여 바꿀 수 있다. 이를 이용해서 리다이렉트를 피할 수 있고, 응답시간을 개선할 수 있다. 같은 사이트 안에서 리다이렉트 대신 REFERER 로그를 이용하는 것은 내부 트래픽을 위해서 또 사용자 응답 시간을 개선하기 위해서 시간을 들일 가치가 있는 작업이다.
ㄹ. 외부 트래픽 분석.
사용자 트래픽을 분석할 경우, 웹 사이트 외부로 링크가 되었을 수도 있을 것이다. 이 상황에서 REFERER 를 이용하는 것은 실용적이지 못하다. 그래서 외부트래픽을 분석할 때 리다이렉트의 대안은 비콘(beacon)을 이용하는 것이다. 비콘을 사용할 때 어려운 점은 다른 페이지로 이동하려는 도중에 비콘의 요청을 보냄으로써 race condition 에 빠질 수 있다는 점이다. onload, XMLHttpRequest 를 사용하기도 하지만 target 속성을 활용하면 race condition 은 피할 수 있을 것이다.
ㅁ. 더 산뜻한 URL.
리다이렉트 없이 좀 더 간단한 URL을 만드는 방법을 찾아야 한다. 사용자에게 추가적인 HTTP 요청을 보내게 하는 것보다 Alias, mod_rewrite, DirectorySlash 그리고 직접적인 링크코드를 이용해서 추가적인 리다이렉트를 피하는 것이 좋다.
리다이렉트를 피할 수 있는 방법을 찾아라.