전단 성능-gzip 압축
압축 은 어떻게 일 합 니까?
Http/1.1 부터 브 라 우 저 는 http 요청 헤더 에 Accept-Encoding 헤드 를 추가 하여 압축 을 지원 합 니 다.
Accept-Encoding: gzip,deflate
웹 서버 가 요청 헤더 에서 Accept-Encoding 헤드 를 발견 하면 Accept-Encoding 이 지정 한 압축 알고리즘 목록 중 하 나 를 사용 하여 응답 을 압축 할 수 있 습 니 다.웹 서버 는 응답 헤드 의 Content-Encoding 헤드 를 통 해 브 라 우 저 응답 내용 에 어떤 압축 알고리즘 을 사 용 했 는 지 알려 줍 니 다.
Content-Encoding:gzip
Gzip 은 현재 가장 유행 하고 효율 적 인 압축 방법 이다.또 다른 압축 알고리즘 은 deflate 이지 만 약간 비효 율 적 이 고 유행 하지 않 습 니 다.deflate 를 지원 하 는 브 라 우 저 도 gzip 을 지원 하지만 gzip 을 지원 하 는 브 라 우 저 는 deflate 를 지원 하지 않 기 때문에 gzip 는 압축 응답 방법 으로 더욱 적합 합 니 다.
어떤 것 이 압축 되 어야 합 니까?
많은 사이트 에서 그들의 HTML 문 서 를 압축 하지만 스 크 립 트 스 크 립 트 와 stylesheet 스타일 파일 을 압축 하 는 것 은 가치 가 있 습 니 다.
압축 은 하나의 비용 이 있 습 니 다.그것 은 추가 적 인 서버 단 압축 과 클 라 이언 트 압축 을 푸 는 CPU 자원 을 가 져 올 것 입 니 다.이해득실 을 따 지기 위해 서 는 응답 크기,네트워크 대역 폭,서버 와 브 라 우 저 간 의 네트워크 거리 등 요 소 를 고려 해 야 합 니 다.이런 정 보 는 쉽게 얻 을 수 없습니다.따라서 일반적으로 1k 가 넘 거나 2k 가 넘 는 파일 은 압축 할 가치 가 있다.
압축 률
압축 은 보통 응답 70%정도 의 크기 를 줄 일 수 있다.
프 록 시 캐 시
브 라 우 저가 프 록 시 를 거 친 요청 을 보 내 면 상황 이 상대 적 으로 복잡 해진 다.gzip 를 지원 하지 않 는 브 라 우 저 에서 프 록 시 서버 에 첫 번 째 요청 을 한다 고 가정 합 니 다.첫 번 째 요청 이기 때문에 프 록 시 서버 의 캐 시 는 비어 있 습 니 다.프 록 시 는 요청 을 웹 서버 에 전송 하고 웹 서버 는 압축 되 지 않 은 응답 을 합 니 다.이 압축 되 지 않 은 응답 은 프 록 시 캐 시 에 의 해 브 라 우 저 에 보 내 집 니 다.현재 가짜 두 번 째 gzip 압축 을 지원 하 는 요청 을 프 록 시 로 보 냅 니 다.프 록 시 에서 압축 되 지 않 은 데 이 터 를 꺼 내 응답 하면 gzip 를 사용 하 는 능력 을 잃 게 됩 니 다.
더 나 쁜 것 은 gzip 을 지원 하 는 브 라 우 저 에서 첫 번 째 로 요청 하고 두 번 째 로 지원 하지 않 는 브 라 우 저 에서 요청 하면 프 록 시 캐 시 에 콘 텐 츠 의 압축 버 전이 있 으 며 gzip 압축 을 지원 하 든 안 하 든 서 비 스 를 제공 합 니 다.
이 문 제 를 해결 하 는 방법 은 웹 서비스 응답 헤더 에 Vary header 필드 를 추가 하 는 것 입 니 다.웹 서버 알림 프 록 시 는 하나 이상 의 요청 헤더 로 서로 다른 캐 시 응답 을 합 니 다.압축 여 부 는 Accept-Encoding 헤드 를 기반 으로 하기 때문에 웹 서버 의 응답 을 위 한 모든 이유 가 있 는 vary 헤드 필드 에 Accept-Encoding 을 포함 합 니 다.
Vary: Accept-Encoding
이 로 인해 프 록 시 는 요청 헤드 Accept-Encoding 필드 의 모든 값 캐 시 를 기반 으로 서로 다른 응답 내용 버 전 을 만 들 수 있 습 니 다.이전 예 에서 프 록 시 는 응답 하 는 두 가지 버 전 을 캐 시 합 니 다.Accept-Encoding 이 gzip 일 때 압축 된 내용 과 Accept-Encoding 이 지정 되 지 않 았 을 때 압축 되 지 않 은 버 전 입 니 다.브 라 우 저가 Accept-Encoding:gzip 를 프 록 시 에 요청 하면 프 록 시 는 캐 시 에 압축 된 버 전 을 가 져 와 브 라 우 저 에 응답 합 니 다.Accept-Encoding:gzip 헤드 가 없 으 면 브 라 우 저 는 압축 되 지 않 은 버 전 을 받 습 니 다.
대리 변두리 상황
90%의 브 라 우 저 는 gzip 를 지원 한다 고 주장 하지만,그 중 일부 브 라 우 저 는 압축 해제 에 bug 가 존재 할 수 있 습 니 다.압축 을 지원 하 는 브 라 우 저 에 압축 콘 텐 츠 를 제공 하 는 비교적 안전 한 방법 은 IE6+와 Mozilla 5.0+이다.
웹 서버 는 User-agent 의 형식 조건 을 설정 하여 지정 한 압축 보안 브 라 우 저 에 압축 지원 을 제공 할 수 있 습 니 다.예 를 들 어 아파 치 1.3 설정 은 다음 과 같 습 니 다.
mod_gzip_item_include reqheader "User-Agent: MSIE [6-9]"
mod_gzip_item_include reqheader "User-Agent: Mozilla/[5-9]"
캐 시 를 추가 하여 브 라 우 저 를 혼합 하 는 가장 좋 은 방법 은 User-agent 를 Vary 머리 에 추가 하 는 것 입 니 다.
Vary: Accept-Encoding,User-Agent
이렇게 하면 프 록 시 는 요청 한 Accept-Encoding 과 User-agent 의 값 에 따라 서로 다른 웹 서버 응답 버 전 을 캐 시 하여 다음 요청 에 직접 응답 할 수 있 습 니 다.그러나 에이 전 트 는 Accept-Encoding 과 User-agent 요청 헤더 의 조합 캐 시 를 기반 으로 모든 요청 URL 의 응답 내용 을 캐 시 하 는 것 은 불가능 합 니 다.
이 문 제 는 실질 적 으로 균형 적 인 압축 과 캐 시 두 가지 문제 이 고 어떻게 처리 하 느 냐 는 사이트 의 실제 상황 에 근거 해 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.