문제
나는 건설 PHP
사이트,하지만 지금은 만 PHP
내가 사용 절반 정도 포함되어 있에 특정 페이지입니다.(아마도 사용을 일부 데이터베이스 쿼리를 결국.)
단 include()
제표에 대한 관심 속도로 또는 조정,반대로 정체되는 HTML
?어떤 종류의 것들을 일으키는 원인이 되어 경향이 있는 사이트렁?
해결책
엄격히 말하기,스트레이트 HTML 항상 역할보다는 더 빠른 서버 측의 접근 방식 때문에 서버지 모든 해석의 코드입니다.
응답하는 더 큰 문제는,거기에 가 수는 것의 원인이됩니다 당신의 사이트렁;없정된 임계값을 초과하는 경우에 대한 코드를 문제를 일으키는 대PHP.(계속 마음에서는 많은 야후의 사이트는 PHP-구동,그래서 생각하지 않는 PHP 확장할 수 없).
하이는 PHP 기반하는 사이트가 가장 느린 것을 포함보다 더 표시하는 데 필요한 특정 페이지입니다.OSCommerce(oscommerce.com 가)하나의 가장 인기 있는 PHP 기반의 쇼핑 카트.그것은 나쁜 습관은,그러나,포함하는 모든 자신의 핵심 기능(그냥 경우에 필요하다)모든 단일 페이지를 참조하십시오.그렇지 않는 경우에도 당신을 표시 할 필요는'정보자',함수이 로드됩니다.다른 한편으로,많은 PHP frameworks 밖에(같은 cakephp 에서,심포 및 CodeIgniter)는'로드 그것은 당신이 그것을 필요로'접근 방식이다.
내가 조언을 다음과 같다:
- 을 포함하지 않는 것보다 더 많은 기능을 위해 필요한 특정 페이지
- 유료 기능을 별도로(사용 MVC 접근 가능한 경우)
- 사용 require_once 대신에 포함하는 경우 있을 것이라고 생각하는 중첩된 포함합니다(예:페이지를 포함한 파일을 B 을 포함하는 파일의 C).이 포함되지 않도록 동 파일을 두 번 이상.그것은 또한 프로세스를 중지한 경우 파일을 찾을 수 없습니다;따라서 돕는 당신의 문제 해결 과정)
- 캐시 정적으로 페이지 HTML 가능한 경우-하는 것을 피하기 위해석하지 않을 경우에는 변경
다른 팁
확실히(포함)보다 느린 정적 페이지입니다.그러나 현대적인 시스템은 당신 가능성이 높으로 이 병목 현상에 대한 오랜 시간이 어느 경우-.의 혜택을 사용하여 포함을 유지하는 일반적인 사이트의 최신보다 중요 작은 성능,내 생각에(다른 항 중 하나에 페이지 때문에 잊어를 업데이트하고 지도하는 나쁜 사용자 경험,이렇게 나쁜 감정을 귀하의 사이트에 대한/회사/무엇이든).
캐싱 기능을 사용하는 것이 정말로 도움이되지 중 하나 캐시 코드가 될 것보다 느린 단지 포함한다().만간 캐시 제공할을 하고 있다면 계산을 많이 계산(매우 드문 경우 웹 페이지에서),또는 잡는 데이터베이스의 데이터.
소리처럼 당신에 참여한 비트의 조산 최적화입니다.는 경우 응용 프로그램이 내장되지는 동안,성능 문제가 좋은 것을 알고,당신의 주요 관심사이어야 응용 프로그램을 얻 작성합니다.
을 포함하는 삶의 일부가 되었습니다.걱정하지 않는 번호에 대해 걱정을 유지하는 코드의 잘 조직(배 폴더 구조를 사랑스러운 것은,알지 못하는 경우 내가 무슨 말을 하는 모습에서의 구조 Zend Framework 클래스 파일).
에 초점을 얻어로 작성된 응용 프로그램으로 합리적인 금액으로 추출한 것입니다.그룹의 모든 DB 전화로 등급(클래스 또는)그래서 당신이 최소화하는 코드를 복제(키스 원리와 모든)그리고 시간이 리팩터링하고 최적화하는 쿼리를 그들은 중앙에 위치하고 있습니다.또한 시작에서 몇 가지 장치를 테스트하 방지 회귀분석 등을 다룬다.
응용 프로그램을 실행하지 않는,우리에게 무엇이 더 빠르게 또는 더 나은에 의존하기 때문에 각각 응용 프로그램이 무엇이 당신의 병목 현상이 될 것입니다.그것을 밖으로 설정할 수 있습니다 비록 당신이 많이 포함하고,귀하의 루프가 먹는 시간,또는 어떤 것이다.사 XDebug 고 프로필 코드 한 번 실행됩니다.보에 대한 세그먼트의 코드를 먹는 불균형의 시간 다음 리팩터링.초점을 맞출 경우 너무 많은 지금에 성과 사이에 충돌을 포함하고 include_once 당신을 쫓는 유령을 때 사람들은 컬 요청에서 실행 중인 동기화를 먹는 아침 식사도 있습니다.
비록 평균 시간에,최고의 제안을 통해보 php.net 수동하고 있는지 확인하는 경우가 있는 기능을 내장하고 무언가를 당신이 시도하고 있는지,그것을 사용!PHP C 기반의 확장자는 항상보다 더 빨리 모든 PHP 는 코드를 작성할 수 있습,그리고 당신을 놀라게 될 것이 얼마나 무엇을 하려고 하는 이미 완료됩니다.
그러나 다시는 나는 없이 조 최적화가 나쁘다!!! 그냥는 방법에 대한 자세한 내용은 땅에서 좋은 추상화 수준,프로필,그것을 해결한 다음 실제로 무엇을 먹는 시간보다는 고치는 어떤 수 있습니다 당신이 생각하는 시간을 먹을 것이다.
아 포함되어 있는,아무 걱정 없습니다.
할 수 있습에 대한 생각을 조정하고 캐싱글 비트가 어떤 점에서,그러나지 않는 한 당신이 중요한지 문제가 없습니다.가정하면 이 모든 것은 정적 데이터,당신은 심지어 고려한 변환 전체 사이트 static HTML(는 가장 쉬운 방법:스크립트를 작성하는 것을 잡고 모든 페이지를 통해 웹 서버를 덤프 및 그에 일치하는 dir 구조)
대부분의 웹 응용 프로그램에 의해 제한 속도의 데이터베이스(또는 그들의 외부 저장이지만,9/10 시간을 수 있는 데이터베이스),응용 프로그램 코드는 거의 원인에 대한 관심사,그리고 그것처럼 들리지 않는 일을 하는 아무것도에 대해 걱정할 필요는 아직이다.
을 하기 전에 모든 오래 지속되는 결정하는 방법에 대해 구조물에 대한 코드 사이트가 제공하는 것이 좋습니다 당신은 몇 가지 읽기에 요한 모든 기능이 컨트롤러 디자인 패턴입니다.이 있는 동안은 다른 사람이 하나 나타나는 것을 얻는 좋은 거래의 지상에서 웹 개발 원하고 확실하게 될 것입니다 동안.을 취할 수 있습의 일부에서 보는 다른 디자인 패턴에 의해 제안 Martin Fowler 에서 자신의 패턴 기업의 애플리케이션 아키텍처 하기 전에 최종 결정에 대해 어떤 종류의 디자인에 맞게하는 가장 좋은 방법이 될 것입니다.
에 따라의 크기와 범위로 프로젝트할 수 있습으로 갈 준비가 만든 framework for PHP 다음과 같 Zend Framework 또는 PHP 에는 트랙스 또는 결정할 수 있습니다 자신을 구축하는 솔루션입니다.
특히에 관한 렌더링 HTML 내용의 추가 할 수 있습니다 당신의 일부 양식을 사용 템플릿을 유지하기 위해 귀하의 비즈니스 로직의 별도의 디스플레이에서 논리입니다.내가 찾는 것이 하나의 간단한 규칙 내에서 개발은 저를 구간의 경우 작동 중 하나 또는 기타 필요한 변경 될 수 있습니다.사 http://www.smarty.net/">멋지고 나가 알고 있는 대부분의 프레임워크 밖으로 하나가 있는 템플릿의 시스템들 자신의 또는 플러그인 아키텍처를 사용할 수 있도록 자신의 기본적으로 사용되는 방법입니다.당신이 볼 가능한 솔루션에서,나는 당신을 위해 하나를 만들 수 있 캐시된 버전이 있습니다.
마지막으로,우려되는 경우 속도에서 그때 나는 좋은 당신의 방법을 최소화하기 위해 호출의 백엔드 데이터 저장(여부를 데이터베이거나 시스템 파일).을 피하려고 선적 및 렌더링에 너무 많은 콘텐츠는(말 큰 저장된 보고서에 포함된 테이블의 수백 기록)한 번에 모두.가능한 경우 수 있는 방법을 모색합니다.사용자 인터페이스에 로드하는 작은 비트 데이터의 시간입니다.그리고 만약 당신에 대해 특별히 걱정하는 실제 부하를 시 html 콘텐츠 및 CSS,자바 스크립트,또는 다른 종속성을 나가는 것이 좋습니다 당신이 검토 이러한 제안 에서 사람들에 야후!.
를 추가하는 것에 JayTee 언 로딩 기능을 때 당신은 그것을 필요합니다.를 사용하지 않는 경우 당신은 당신의 프레임워크는 자동으로 수행할 수 있습으로 볼__프로그램에서 사용 가능()기능을 도입된 PHP5-기본적으로,당신의 자신의 논리를 호출할 수 있습니다 인스턴스화할 때 특정 클래스지 않는 경우에는 이미 로드됩니다.이 기회를 제공함()파일을 정의하는 클래스에서 수 있습니다.
가장 큰 일을 할 수 있는 응용 프로그램의 속도를 향상시킬 수은 사용하는 코드,캐시아 APC.이 목록 및 설명에서 사용할 수 Wikipedia.
로 포함되어 있는 간단한 우려를 포함하지 않도록주의하라 너무 많은 파일에서 각 요청으로 디스크 I/O 의 일으킬 수 있는 응용 프로그램 확장 할 수 없습니다.십을 포함해야 좋지만,그것은 일반적으로 좋은 아이디어를 패키지로 가장 일반적으로 포함되어 있으로 파일을 단일 스크립트는 그래서 당신은 단지 하나의 포함합니다.비용을 메모리에서의 몇 가지가 여기에 클래스고 거기 당신은 필요하지 않 로드된 것보다 더 나은 비용을 디스크 I/O 포함한 수백 개의 작은 파일입니다.