문제

나는 건설 PHP 사이트,하지만 지금은 만 PHP 내가 사용 절반 정도 포함되어 있에 특정 페이지입니다.(아마도 사용을 일부 데이터베이스 쿼리를 결국.)

include() 제표에 대한 관심 속도로 또는 조정,반대로 정체되는 HTML?어떤 종류의 것들을 일으키는 원인이 되어 경향이 있는 사이트렁?

도움이 되었습니까?

해결책

엄격히 말하기,스트레이트 HTML 항상 역할보다는 더 빠른 서버 측의 접근 방식 때문에 서버지 모든 해석의 코드입니다.

응답하는 더 큰 문제는,거기에 수는 것의 원인이됩니다 당신의 사이트렁;없정된 임계값을 초과하는 경우에 대한 코드를 문제를 일으키는 대PHP.(계속 마음에서는 많은 야후의 사이트는 PHP-구동,그래서 생각하지 않는 PHP 확장할 수 없).

하이는 PHP 기반하는 사이트가 가장 느린 것을 포함보다 더 표시하는 데 필요한 특정 페이지입니다.OSCommerce(oscommerce.com 가)하나의 가장 인기 있는 PHP 기반의 쇼핑 카트.그것은 나쁜 습관은,그러나,포함하는 모든 자신의 핵심 기능(그냥 경우에 필요하다)모든 단일 페이지를 참조하십시오.그렇지 않는 경우에도 당신을 표시 할 필요는'정보자',함수이 로드됩니다.다른 한편으로,많은 PHP frameworks 밖에(같은 cakephp 에서,심포 및 CodeIgniter)는'로드 그것은 당신이 그것을 필요로'접근 방식이다.

내가 조언을 다음과 같다:

  1. 을 포함하지 않는 것보다 더 많은 기능을 위해 필요한 특정 페이지
  2. 유료 기능을 별도로(사용 MVC 접근 가능한 경우)
  3. 사용 require_once 대신에 포함하는 경우 있을 것이라고 생각하는 중첩된 포함합니다(예:페이지를 포함한 파일을 B 을 포함하는 파일의 C).이 포함되지 않도록 동 파일을 두 번 이상.그것은 또한 프로세스를 중지한 경우 파일을 찾을 수 없습니다;따라서 돕는 당신의 문제 해결 과정)
  4. 캐시 정적으로 페이지 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 포함한 수백 개의 작은 파일입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top