Drupal은 개발 속도가 빠르지 만 성능이 너무 나쁩니다. 초당 50 개의 요청에 도달하기가 어렵습니다.
간단한 웹 페이지에는 SQL 쿼리가 너무 많습니다. Drupal.org에서 양식 제출의 요청 시간을 테스트하면 완료하는 데 항상 몇 초가 걸립니다.
웹 사이트의 속도를 어떻게 향상 시킵니까?
Drupal은 개발 속도가 빠르지 만 성능이 너무 나쁩니다. 초당 50 개의 요청에 도달하기가 어렵습니다.
간단한 웹 페이지에는 SQL 쿼리가 너무 많습니다. Drupal.org에서 양식 제출의 요청 시간을 테스트하면 완료하는 데 항상 몇 초가 걸립니다.
웹 사이트의 속도를 어떻게 향상 시킵니까?
답변:
캐싱, 캐싱 및 캐싱.
이전에 비슷한 질문에 대한 몇 가지 제안
이것들은 나의 경험에 대한 메모이며 다른 사람들의 경험과 다를 수 있습니다. 나는 주로 LAMP 스택을 사용하며 내 제안에서 동일하게 고려했습니다.
내가 일반적으로 따르는 캐싱에 대한 썸 규칙.
Drupal 사이트의 성능 향상 (복잡성 증가)
핵심을 업데이트하고 contrib 모듈과 테마를 업데이트하십시오. 그렇습니다.
서버에 APC를 설치하십시오. (Letharion의 제안에 따라 맨 위로 이동)
페이지 캐싱 : admin / config / development / performance 최소 캐시 수명과 캐시 된 페이지 만료의 차이점
스프라이트 시트 사용-https: //www.drupal.org/project/spritesheets
최소 캐시 수명 시간 값을 더 높은 수로 설정하고 캐시 지우기 모듈을 사용하여 특정 페이지의 캐시를 지우십시오- 노드를 편집 / 업데이트 할 때마다 익명 사용자의 모든 페이지 캐시가 손실됩니다
부스트 모듈은 매우 유용하며 웹 페이지에서 정적 파일 캐시를 만듭니다. 대부분 익명 사용자 트래픽이 많은 웹 사이트를위한 것입니다.
Boost는 Drupal에 정적 페이지 캐싱을 제공하여 대부분 익명 트래픽을받는 사이트에 대한 성능 및 확장 성을 크게 향상시킵니다. 공유 호스팅의 경우 성능 향상 측면에서 가장 좋은 옵션입니다. 전용 서버에서는 대신 바니시를 고려할 수 있습니다.
Apache는 Nginx, Lighttpd 및 IIS 7이 반 지원되어 완벽하게 지원됩니다. Boost는 html, xml, ajax, css 및 javascript를 캐시 및 gzip 압축합니다. 캐시 만기 로직을 향상시킵니다. 사이트의 다른 부분에 대해 다른 캐시 수명을 갖는 것은 매우 간단합니다. 내장 된 크롤러는 빠른 페이지 로딩을 위해 만료 된 컨텐츠를 빠르게 재생성합니다.
SQLIte 데이터베이스 드라이버를 사용하는 경우 디스크 동기화를 비활성화해야 할 수도 있습니다.
/**
* Implements hook_init().
*/
function HOOK_init() {
db_query('PRAGMA synchronous = OFF');
}
일부 서버 구성에서는 성능이 크게 향상됩니다.
Drupal 성능의 비결은 모범 사례 를 캐싱 하고 준수하는 것입니다. 제안 :
defer
또는 async
속성을 사용하십시오.웹 사이트에 많은 부하가 예상되는 경우 Varnish를 사용하십시오. CDN도 사용하십시오.
: 더 읽기 스케일링 및 튜닝 성능을 실제 세계의 경험을
추가 자료 :
High Performance Drupal 이라는 책이 있으며 여러 가지 성능 및 확장 성 문제를 해결하기위한 모범 사례, 예제 및 자세한 설명을 제공합니다. Drupal 내부, 응용 프로그램 성능, 데이터베이스, 웹 서버 및 성능 분석에 코딩 및 인프라 기술을 적용하는 방법을 배웁니다.
Drupal 7 의 성능 및 확장 성 기사 에서 Drupal 6 및 Drupal 7에 대한 몇 가지 예와 다음 목록을 찾을 수 있습니다.
Drupal 7 성능 및 확장 성 프로젝트 :
- https://www.drupal.org/project/agrcache
- https://www.drupal.org/project/apc
- https://www.drupal.org/project/beanstalkd
- https://www.drupal.org/project/boost
- https://www.drupal.org/project/cdn
- https://www.drupal.org/project/core_library
- https://www.drupal.org/project/entitycache
- https://www.drupal.org/project/efq_views
- https://www.drupal.org/project/hash_wrapper
- https://www.drupal.org/project/labjs
- https://www.drupal.org/project/headjs
- https://www.drupal.org/project/media_amazon
- https://www.drupal.org/project/memcache
- https://www.drupal.org/project/mongodb
- https://www.drupal.org/project/performance_hacks
Drupal 사이트의 성능을 최적화하기 위해 많은 조정이 있었지만 모두가 반드시 필요한 것은 아닙니다. Drupal의 최적화 플랫폼으로 이어질 특정 대안과 기술을 둘러 봐야합니다. 캐시, 예, 다른 방법을 통해 웹 사이트를 최적화하는 방법이지만 더 많은 추가 기능과 팁을 사용하면 번거롭지 않은 프로세스없이 웹 사이트를 늘리고 조정할 수 있습니다.
최근 웹 사이트와 비슷한 기사를 발간하여 약간의 수정 작업에 도움이 될 것으로 생각합니다.
출처 : http://www.cloudreviews.com/blog/drupal-performance-optimization-tips
새로운 모듈을 설치하지 않고도 Drupal 속도를 적당한 수준으로 향상시킬 수있는 가능성이 있습니다. 예, Drupal에는 성능 구성이 있습니다.
'자바 스크립트 파일 집계'사용
이 구성이 설정되면 다음으로 이동하십시오. YourSiteDomain / admin / reports / status
이제 drupal 7 사이트의 속도 최적화가 완료되었습니다.
속도를 확인하는 온라인 속도 테스트 도구는 거의 없습니다. 위 설정을 업데이트하기 전에 속도 점검 도구 중 하나를 사용하고 테스트를 실행하십시오. 성능 설정을 업데이트 한 후에는 속도 테스트를 다시 실행하십시오. 당신은 확실히 개선을 볼 수 있습니다.
Pingdom 및 HTTP Fox (FireFox 플러그인)는 사이트 속도를 확인하는 가장 좋은 도구입니다.
위의 설정은 익명 사용자의 페이지를 캐시 할뿐만 아니라 CSS 및 JS 파일도 압축합니다. 예를 들어 사이트에서 80 개의 파일을로드하는 경우 이러한 설정을 게시하면 요청 수가 50 % 이상 줄어 듭니다. 따라서 Drupal 사이트의 속도가 2 배 향상되었습니다.
백엔드 개발자는 항상 웹 사이트의 성능을 향상시키기 위해 코드를 개선 할 여지가 있습니다. 백엔드 개발자를위한 몇 가지 지침은 다음과 같습니다.
1) 감시 테이블 정리
2) 변수 API를 남용하지 마십시오
3) 더 적거나 더 나은 HTTP 요청
4) "도트 모듈"을 짧게 유지
폰트 엔드 및 사이트 빌더의 경우 훨씬 더 많은 것을 달성 할 수 있지만 모든 관점에서 성능을 고려하는 것이 중요합니다.
출처 : 라이브 전에 최적화
RAM이 2GB 인 최적화되지 않은 Drupal 7 사이트는 초당 약 20-25 개의 요청을 만족스럽게 처리 할 수 있습니다. 그 이상으로 가고 싶다면 사이트를 약간 조정해야합니다. 조정하는 것은 사이트의 대부분의 사용자가 익명인지 인증되었는지에 따라 다릅니다. 성능 향상을 위해 수행 할 수있는 최고의 작업은 다음과 같습니다.
사이트는 대부분 익명 사용자에게 서비스를 제공합니다.
1) APC, memcache 및 entitycache를 확실히 설치하고 구성하십시오.
2) 웹 서버 앞에 니스 프록시를 넣으십시오. 설치 및 구성하는 데 약 30 분이 걸리지 만 페이지로드 시간이 크게 줄어 듭니다. 실제로 모든 페이지가 캐시 된 경우 Varnish는 2GB 시스템에서 초당 약 300 개의 요청을 처리 할 수 있습니다. 컨텐츠 업데이트 / 삭제시 선택한 페이지 만 만료하려면 만료 모듈을 사용하십시오.
3) 고급 CSS / JS 집계 모듈을 사용하여 CSS 및 JS 파일을 집계하십시오. 모든 JS 파일을 페이지 맨 아래로 이동하십시오. 그러나 이로 인해 사이트가 손상 될 수 있으므로 철저한 테스트 후에 프로덕션 환경에서 구현하십시오. 또한 중요한 CSS 인라이닝을 실험하십시오. 내 경험상 페이지로드 시간이 약 0.5 초 줄어 듭니다.
4) CSS / JS / image는 미래의 만료 헤더가 있어야합니다. 이렇게하면 브라우저가 동일한 CSS / JS / 이미지를 반복해서 요구하지 않습니다.
5) 웹 서버가 압축 페이지 / CSS / JS를 제공하고 있는지 확인하십시오.
위의 5 단계를 구현 한 후 2GB RAM 서버는 초당 50 개의 요청을 매우 쉽게 서버 할 수 있어야합니다.
사이트는 주로 인증 된 사용자에게 서비스를 제공합니다.
이러한 사이트를 최적화하는 것이 더 복잡합니다. 이러한 사이트는 최적화를 위해 두 가지 하위 범주 중 하나에 속합니다.
(a) 사이트의 페이지 대부분은 사용자 별 정보가있는 1 개 또는 2 개의 블록을 제외하고 동일합니다. 예를 들어 Drupal Commerce 사이트.
(b) 대부분의 페이지는 사용자에 맞게 완전히 사용자 정의됩니다. 예를 들어 Drupal Commons 사이트.
귀하의 사이트가 카테고리 (a)에 해당하는 경우, 대부분 익명 사용자에게 서비스를 제공하는 사이트에 대해 논의한 대부분의 기술을 적용하십시오. 유일한 차이점은 관리자가 아닌 페이지의 경우 Varnish는 헤더에서 SESSION 쿠키를 제거하고 캐시 된 페이지를 제공해야한다는 것입니다. AJAX 블록 모듈을 사용하여 AJAX를 사용하여 사용자 별 정보가있는 서버 블록을 서버에 배치하십시오. 이러한 방식으로 대부분의 페이지는 니스를 사용하여 매우 빠르게 제공되며 사용자 별 정보는 AJAX를 통해 제공됩니다.
귀하의 사이트가 카테고리 (b)에 해당되면 Authcache 모듈을 사용하십시오. 나는 약간의 구성과 유지 보수가 필요하기 때문에 가능한 한 많이 사용하지 않는 것을 선호합니다. 그러나 그것은 실제로 잘 작동합니다. 니스를 사용하는 것만 큼 빠르지는 않지만 원하는 초당 50 건의 요청을 처리 할 수 있습니다.
여기서 논의한 내용을 넘어서고 싶다면 Drupal Performance Optimization Checklist를 살펴보십시오 . 공개 : 본인이 작성했습니다. Drupal 사이트를 빠르게 만들기 위해 할 수있는 모든 작업 목록을 인용합니다.