2008-08-25 3 views
22

나는 mod-rewrite가 성취하는 많은 긍정적 인 것들을 알고있다. 그러나 부정적인 점이 있습니까? 분명히 규칙이 잘못 작성되면 문제가 발생할 것입니다. 하지만 대량 사이트를 운영하고 mod-rewrite를 지속적으로 사용하는 경우 성능에 심각한 영향을 미칠 수 있습니까? Google에서 일부 벤치 마크를 빠르게 검색했지만 많이 찾지 못했습니다.Mod-Rewrite를 사용할 때 부작용이 있습니까?

답변

34

중요한 성능 문제없이 수백만/히트/월의 사이트에서 mod_rewrite를 사용했습니다. 당신은 당신의 규칙에 따라 먼저 적용되는 재 작성을 알아야합니다.

mod_rewrite를 사용하는 것이 현재 언어로 URL을 구문 분석하는 것보다 빠를 가능성이 큽니다.

성능에 대해 정말로 염려하는 경우 .htaccess 개의 파일을 사용하지 마십시오. 속도가 느립니다. 모든 다시 쓰기 규칙을 Apache 구성에 넣습니다. 시작시 한 번만 읽습니다. .htaccess 부모 폴더에있는 파일과 함께 모든 요청에 ​​대해 .htaccess 개의 파일이 다시 파싱됩니다.

+26

좋은 답변이지만, * 사용 가능 * .htaccess 파일이 문제이므로 사용하지 않는 것이 좋습니다. 완전히 비활성화하지 않으면 아무 곳에서나 하나의 .htaccess 파일이 없더라도 모든 경로 세그먼트에 대해 stat-hit을 유지할 수 있습니다. –

+3

AllowOverride None을 사용하여 .htaccess를 비활성화하십시오. – NateS

3

아파치의 성능이 걱정된다면, 재 작성 규칙이 많은 경우 고려해야 할 한 가지는 "건너 뛰기"플래그를 사용하는 것입니다. 규칙에 대한 일치를 건너 뛰는 방법입니다. 그래서, 어떤 오버 헤드라도 일치에 소비되었을 것이고 저장됩니다.

필자는 "건너 뛰기"플래그를 많이 사용하는 프로젝트에 있었고 파일에 쓰여진 순서에 따라 유지 관리가 어려웠습니다.

+3

어떤 상황에서는 [L] 플래그를 사용하는 것이 더 좋을 수 있습니다 (현재 하나가 일치하면 * all * 다음 규칙을 건너 뛰도록 지정해야합니다). –

+0

하위 디렉토리/새로운 현지화에서 .htaccess를 방지하려면 플래그를 "END"로 설정하십시오. – 18C

7

Ryan이 위에 언급 한 내용을 되풀이하기 위해 .htaccess의 규칙은 구성 파일에 규칙이있는 것과 비교하여 바쁜 사이트의로드 시간을 크게 해칠 수 있습니다. 우리는 처음에 이것을 (~ 60million pages/month) 시도했지만 서버가 흡연하기 시작할 때까지 그리 오래 가지 못했습니다 :)

설정에 규칙이 있다는 명백한 단점은 사용자가 설정을 수정할 때마다 설정을 다시로드해야한다는 것입니다. 규칙.

마지막 플래그 ("L")는보다 자주 액세스되는 규칙이 처음으로 평가되고 가장 먼저 평가되면 규칙 실행 속도를 높이는 데 유용합니다. 그래도 규칙을 길게 설정하면 관리가 훨씬 까다로워 질 수 있습니다. - 어느 날 아침 나는 내 규칙 목록을 중간에서 편집하고 두 개 이상의 덫을 채우는 최상위를 차지하면서 두 차례의 매우 불만스러운 시간을 낭비했습니다. 예정된!

우리는 관련 벤치 마크를 찾는 데 어려움을 겪었고 우리 자신의 내부 테스트 세트를 완성했습니다. 일단 규칙을 정렬하고 적절하게 정렬하고 Apache 구성 파일에 포함 시키면 성능에 부정적인 영향을 거의주지 못했습니다.

관련 문제