2011-03-18 5 views
3

우리는 하루에 2k-5k의 유니크를 제공 할 수있는 웹 사이트를 만들고 있습니다.600 + 모드 재 작성 규칙, 아파치로 괜찮습니까?

RewriteRule ^عربية$ arabic.php [L] 

문제는 우리가 위처럼 600 재 작성 규칙이 있습니다 : 웹 사이트가 아랍 스피커의 방향이 때문에 우리는 같은 재 작성 규칙을 만들기 위해 htaccess로 파일을 구성. 괜찮습니까? 아니면 내 서버가 진짜 느리게 만들 것입니까? [L] 태그가 도움이됩니까?

+3

아파치는 요청할 때마다 .htaccess를 구문 분석해야합니다. 다시 쓰기 규칙을 VirtualHost 설정 (보통 httpd.conf)으로 옮겨야합니다.이 설정은 아파치가 시작될 때 한 번만 구문 분석됩니다. – Maerlyn

+0

[이전 질문에 대한] (http://stackoverflow.com/questions/5302133/htaccess-rules-efficentway)? – Gumbo

+0

@Gumbo 40에서 600으로 축척되었습니다. – Tom

답변

7

정적 키워드 만 사용하는 경우 별도의 규칙 대신 hash map을 사용하고 싶습니다. 해시 맵에 대한 찾기 작업의 복잡성은 O (n)의 반대 인 O (1)이므로 n 규칙입니다.

그래서 당신이 뭔가를 할 수 있습니다 :

عربية arabic.php 
الأغاني songs.php 
الفنان artist.php 

는 그 다음에 일반 텍스트 파일을 설정하는 httxt2dbm를 사용

RewriteMap arabic-keywords dbm:/path/to/file/arabic-keywords.map 

초기 키워드 맵 형식의 일반 텍스트 파일입니다 해시지도 :

httxt2dbm -i arabic-keywords.txt -o arabic-keywords.map 

그리고지도의 사용 :

RewriteCond %{arabic-keywords:$0} .+ 
RewriteRule .+ %0 [L] 

일치하는 항목이없는 경우 해시 다시 쓰기 맵은 빈 문자열을 반환하므로 조건이 충족되는 경우에만 조건이 충족됩니다. 그러나 .htaccess 파일 context에는 RewriteMap을 사용할 수 없습니다.

+0

당신은 이미 내 문제가 이제는 잘 알고, 나는지도 또는 httpd.conf 방법을 선택해야합니다. 마지막 테이크는 무엇입니까? :) – Tom

+1

@ 톰 : 최적이 아닌 경우 해시 맵을 제안하지 않겠습니다. – Gumbo

+0

다른 심오한 답변에 대해 검보에게 감사드립니다! – Tom

0

비슷한 vistor 요금으로 웹 사이트에서 유지 관리를하고 있으며 현재 약 500 개의 MOD 재 작성 규칙이 있습니다. 그들은 오버런 성능에 거의 영향을 미치지 않습니다.

[L] 태그는이 성능에 조금 도움이됩니다. 특히 가장 많이 사용되는 규칙을 페이지 상단에 보관하는 경우

+0

같은 문제가있는 사람에게서 그 이야기를 듣기 좋습니다. @pinusngra는 그렇지 않다면 다른 사람이 의견을 추가 할 수 있습니까? – Tom

+0

글쎄, @pinusnegra에 동의한다. 더 효율적인 것이 달성 될 수있다. 단지 이것이 병목 현상이 될 필요는 없다는 것을 지적하십시오. – gnur

1

성능 및 유지 관리가 너무 어렵다고 생각합니다.

모든 관련 요청을 arabic.php로 전달하는 다시 쓰기 규칙을 만든 다음 PHP를 사용하여 $ _SERVER [ 'REQUEST_URI']를 처리하여보다 동적 인 라우팅을 제공합니다.

더 많은 유지 관리가 가능합니다.

+0

그건 위키 피 디아가 마술을하는 방식입니다. 그러나 우리 웹 사이트는 확장 성이 없지만 2 센트 친구에게 감사드립니다. – Tom