2012-06-24 2 views
0

저는 현재 교육용 (그리고 실용적이라면 실용적인 경우) 사용자 정의 MVC 프레임 워크를 만드는 것을 망설이고 있습니다. 가능한 성능 향상을 위해 여러 가지 시나리오를 조사하십시오. 이 URI 라우팅에 관해서MVC 라우팅 - PHP (또는 Ruby 등) 대신 NGINX를 사용합니다.

, 나는

/controller/action/id 

그리고 라우팅을 제어하려면이 밖으로 데이터를 분석하는 것은 너무 어렵지 않을 것의 표준 URI 형식을 잘 알고 있어요. 지금 제가있는 moreso에 대해 궁금하고있어 nginx를 직접 컨트롤러에 전달하는 몇 가지 유형의 쿼리 문자열로 출력이 URI 문자열을 구문 분석 가진 사이의 성능 차이는, 그래서 그 대신

/foo/bar/12 => /application/foo.php?action=bar&id=12 

처럼 끝날 것

/foo/bar/12 => /index.php?controller=foo&action=bar&id=12 

또는

/foo/bar/12 => /index.php?uri=/foo/bar/12 (note that this would be encoded) 

내가 nginx를 이미 다른 변수에 PHP-FPM에 대한 URL, 쿼리 문자열 및 기타 물건을 전달하는 알고 있어요,하지만 이것은 단지입니다 내가 생각하는 것을 보여주는 설명의 목적.

어리석은 짓인가요? 나는 nginx에서 명시 적으로 경로를 정의함으로써 nginx를 다시 시작할 필요가 있음을 알았다. 설정에서 경로를 변경할 때마다 단점이 될 수있다.

그래서 MVC 라우팅에 관해서는 실제 웹 서버 (이 경우 nginx) 자체가 컨트롤러에 대한 라우팅을 처리하거나 표준 랜딩 스크립트를 사용하면 성능이 향상됩니다. (디렉토리의 루트에있는 index.php와 같음) 라우팅을 위해 파싱 할 URI를 따라 잘 전달할 수 있습니까?

미리 감사드립니다. 또한, 나는 단지 이것들에 대해 배우고 있기 때문에, 나는 진심으로 대신 내가해야하는 것에 대한 제안을 환영한다.

+0

여기서 생각해보기 : 프레임 워크를 사용하여 두 언어로 된 뉴스 사이트를 구현하는 방법 (URL은 일부 번역도 가능) –

+0

당신은 아직 그것을 고려하지 않았기 때문에 좋은 질문을 제기합니다. 내가 다른 언어를 고려하고 있다면, 아마도/en,/es와 같은 끝에 uri에 추가 지시문을 추가하고 uri를 내 프레임 워크가 수행 할 수있는 위치에 적절하게 현지화 할 수있는지도를 가지고있을 것입니다. 이해하고 데이터베이스를 제대로 질의하는 데 사용하십시오. 그래도 내 머리 꼭대기에서 떨어져. –

답변

1

HTTP 서버에 응용 프로그램 로직 (URL 라우팅)을 포함시키지 않겠습니다. 아파치 .htaccess 파일에 의존하는 PHP 애플리케이션이 많이 있습니다. 그것은 엉망이되어 버린다.

당신이 말했듯이, 경로를 변경하려면 Nginx를 다시 시작해야하며, 나중에 다른 HTTP 서버에 대한 모든 규칙을 다시 작성하지 않는 한 Nginx에 응용 프로그램을 연결합니다. 심지어 더 나쁜 경우, 둘 이상의 서버에서 앱을 확장하려는 경우 각 업스트림에 대해 이러한 규칙을 반복해야합니다.

tl; dr 레이어를 분리하지 마십시오.

+0

나는 그것에 대해 생각하고 있었지만, 여전히 호기심이 많았다. 고마워요! –