htaccess가 엄청나게 편하긴 한데 그만큼 성능을 꽤 깍아먹죠...
두가지 측면에서 깍아먹는데 첫번째는 htaccess 파일이 존재하는지 아닌지
모든 중간 경로에서 찾아야 한다는 점.
다만 첫번째 문제는 디스크 캐쉬에 의해 상쇄될 수 있습니다.
그럼에도 불구하고 영향은 있습니다. 대략 2~3% 정도의 성능 하락.
또한 이것은 단순한 반복테스트에 의한 측정결과이므로 실제 서버에서는
보다 큰 성능하락이 있을 수 있습니다.
그리고 둘째는 htaccess 파일을 로드해서 파싱하는데 걸리는 시간입니다.
이건 옛날에 PHP에 opcache가 없던 시절을 생각하시면 될겁니다...
벤치마크에 의하면 htaccess 파일 100라인당 대략 1ms 정도 지연이
발생한다고 생각하면 되는 것 같습니다.
(1500라인 htaccess로 12ms 지연 발생, 3000라인 htaccess로 25~35ms 지연 발생)
이걸 해결하는 방법은 AllowOverride none으로 htaccess를 disable하고
그 설정을 그냥 conf 파일의 VirtualHost 안쪽에다가 넣는겁니다.
뭐 htaccess 파일이 한두개면 별로 어렵지 않은데.. htaccess 파일 갯수가 많으면
이것도 꽤 귀찮은 일이죠...
그래서 아래와 같은 간단한 스크립트를 하나 짰습니다.
이걸 도큐먼트 루트에 combine_htaccess.php 이름으로 저장하고서 컴맨드 라인에서
php combine_htaccess.php > htaccess.txt
이렇게 하시면 예쁘게 htaccess 설정들을 파일 하나로 모아줍니다.
htaccess.txt 파일을 여신 다음에 복사해서 아파치 conf파일에 붙여넣기 하시면 됩니다.
<?php echo "AllowOverride none\n\n"; recursive(__DIR__); function recursive($path) { if (is_dir($path)) { if (file_exists($path . '/.htaccess')) { echo "#-------------------------------------------------------------\n<Directory $path>\n"; readfile($path . '/.htaccess'); echo "\n</Directory>\n\n"; } array_map(__FUNCTION__, glob($path . '/*')); } }
게시글 내용도 그렇고
단비아빠님이 쓰시는 글들도 그렇고.
참 신비롭습니다. ㅎㅎ
매번 글 잘보고 있습니다.
저는 Nginx라서 패스 ㅠ.ㅠ