htaccess의로드 시간 영향


15

Apache에서 물건을 처리 할 수있는 가능성은 일반적으로 두 가지입니다.

  • htaccess 파일을 사용하여 폴더를 하나씩 구성하십시오.

  • htaccess를 완전히 사임하고 모든 규칙을 httpd.conf에 넣습니다.

htaccess의 사용법은로드 시간 문제입니다. 로드 시간 측면에서 htaccess 사용량이 얼마나 비싼 지 알고 싶습니다. 테스트가 있습니까?

답변:


22

Apache 프로젝트 의 권장 사항 은 다음과 같습니다.

일반적으로 주 서버 구성 파일에 액세스 할 수없는 경우 .htaccess 파일 만 사용해야합니다. ... 일반적인 오해 는 사용자 인증 및 mod_rewrite 지시문이 .htaccess파일에 들어가야한다는 것입니다 .

따라서 AllowOverride None기본 httpd.conf (및 / 또는 하위 섹션 Include)에 다른 지시문을 모두 설정 하십시오.


Apache가 구성 되어 AllowOverride None있지 않은 경우 .htaccess파일 사용 여부에 관계없이 성능이 약간 저하 됩니다.

이는 모든 요청 아파치 .htaccess에 대해 요청 된 자원으로 이어지는 모든 (하위) 디렉토리에 잠재적 파일 이 있는지 확인해야하기 때문입니다 . 예를 들어 / www / htdocs / example 디렉토리에서 파일을 요청하면 아파치는 다음 파일을 찾아야합니다.

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

따라서 해당 디렉토리에서 각 파일 액세스에 대해 해당 파일이없는 경우에도 4 개의 추가 파일 시스템 액세스가 있습니다. (AllowOveride가 /로 설정된 경우)

( man 2 stat) 자체에 사용되는 시스템 호출 은 그다지 비싸지 않으며 일반적으로 실제 디스크를 폴링하여 실제 IO 요구 사항을 제한하는 대신 파일 시스템 캐시가 사용되지만 이 기사가 주장하는 것처럼 여전히 추가 할 수 있습니다 .


하나 이상의 실제 .htaccess파일이 실제로 존재하는 경우, 아파치는 여전히 파일을 open읽고 읽고 ( 다른 IO 읽기 작업 및 일반적으로 파일 시스템 속성 을 업데이트하기 위한 IO 쓰기 작업을 트리거 atime) 파일을 읽고 구문 분석 을 수행하기 전에 파일 을 구문 분석 해야합니다.

지시문이 main에있을 때와 달리 httpd.conf시작시 한 번만 구문 분석하기 위해 아파치가 .htaccess필요하면 각 파일은 각 요청마다 다시 해석되어야합니다.

IO 작업 외에도 .htaccess 파일을 구문 분석하는 데 드는 비용은 복잡도에 따라 다릅니다.

이를 위해서는 신중한 벤치마킹이 필요합니다.


4

비용은 서버의 성능, 특히 스토리지 I / O 서브 시스템의 성능 및 캐싱 관련 여부에 따라 다릅니다.

이를 테스트하는 방법은 .htacess로 시스템을 구성 하고 웹 서버와 동일한 방식으로 로드 테스트 하는 것입니다. 그런 다음 .htaccess없이 시스템을 구성하고 동일한 테스트를 실행하십시오.

비교의 결과를 대조 하여 구성된 시스템.


1

귀하의 질문에 대한 하나의 정답이 있다고 생각하지 않습니다. htaccess로드 시간에 영향을 줄 수있는 많은 변수가 있습니다 :

  • 사이트 폴더 구조 : 페이지를 열 때마다 각 폴더의 모든 .htaccess가로드됩니다.
  • htaccess 파일의 길이는 200 줄입니까 3500 줄입니까? 큰 차이가 있습니다.
  • .htaccess 구성 : 다시 쓰기 및 리디렉션 규칙은 다른 규칙보다 무거울 수 있으며 유일한 규칙은 아닙니다.
  • 클라이언트 측의 네트워크 연결은로드 시간에 영향을 줄 수 있습니다. IMO, 여러 곳에서 시도해 볼 수 있으며 평균 시간은 참조와 같습니다.
  • ab-Apache HTTP 서버 벤치마킹 도구 가 도움이 될 수 있습니다

더 많은 정보:


1

.htaccess를 사용하거나 사용하지 않고 테스트했으며 속도와 오버 헤드의 차이를 전혀 찾을 수 없었습니다. 16 개의 사이트 만 운영하고 초고속 서버이므로 밀리 초를 추적하는 것은 거의 불가능합니다. 수백 개의 사이트를 실행하는 서버에서 @Iain이 테스트하고 확인한 것처럼 오버 헤드가 눈에 may 수 있습니다.

나는 개인적으로 가상 호스트에 .conf 파일을 사용하여 모든 것을 수행하지만 .htaccess는 모든 것을 완벽하게 제어 할 수 있으며 깨끗하고 아파치의 메모리에 한 번로드됩니다. 내 워드 프레스 다시 쓰기 규칙조차도 .conf 파일에 있으므로 절대로 깨지지 않습니다.


초고속은 얼마나 빠릅니까?
제임스 커크비

@James Kirkby 지금 당장 사무실 밖에서 정확한 서버 사양을 보내 드리겠습니다. Proxmox 컨테이너에서 모든 것을 실행하고 있습니다. 내 웹 서버와 16 개의 WordPress 사이트에는 모두 Google Pagespeed에서 91-96이 있으며 항상 조정하고 최적화하고 있습니다.
MitchellK

@JamesKirkby Ubuntu 14.04, Apache 2.4.7 및 PHP-FPM을 실행하는 2 x 6 코어 프로세서와 64Gb의 Ram이 있습니다. 그것은 약간의 야수입니다, 나는 그것이 성능에 황홀합니다.
MitchellK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.