Drupal7 사이트의 성능을 개선하려면 어떻게합니까? [닫은]


10

Drupal을 처음 사용하는 사람에게는 Drupal Caching에 사용할 수있는 리소스가 많지만 어느 것을 사용해야하는지 잘 모르겠습니다.


1
메타에 대한 정식 질문이 필요한지 논의 할 수 있지만 여전히 너무 광범위하다고 생각합니다. 또한 성능 향상은 상황에 따라 달라지며 진공 상태에서는 수행 할 수 없습니다.
mpdonadio

답변:


26

이것들은 나의 경험에 대한 메모이며 다른 사람들의 경험과 다를 수 있습니다. 나는 주로 LAMP 스택을 사용하며 내 제안에서 동일하게 고려했습니다.

내가 일반적으로 따르는 캐싱에 대한 썸 규칙.

  1. 한 번 여러 번 사용하십시오.
  2. 가능한 경우 오래된 데이터로 라이브
  3. 드물게 캐시를 지우고 매우 구체적으로 유지하십시오.
  4. 가능하면 스택에서 가장 낮은 수준으로 변경하십시오. LAMP-DCCc : Linux, Apache, Mysql, PHP, Drupal Core, Contrib 및 사용자 정의 모듈.

Drupal 사이트의 성능 향상 (복잡성 증가)

  1. 핵심을 업데이트하고 contrib 모듈 및 테마를 업데이트하십시오. 그렇습니다.

  2. 서버에 APC를 설치하십시오. (Letharion의 제안에 따라 맨 위로 이동)

  3. 페이지 캐싱 : admin / config / development / performance 최소 캐시 수명과 캐시 된 페이지 만료의 차이점

  4. 블록 캐싱 https://drupal.org/project/blockcache_alter 모든 블록에 대한 캐싱 옵션.
  5. 자바 스크립트 및 CSS 파일 집계-프런트 엔드 개선 https://www.drupal.org/project/advagg
  6. 불필요한 모듈을 비활성화하십시오. 모든 모듈은 페이지로드에 필요한 코드 양을 추가합니다. 또한 조회 수가 증가합니다. 가능한 경우 특정 기능을 수행하는 여러 모듈 대신 일반 모듈을 사용하십시오.
  7. 캐시보기 컨텐츠-보기에 대한 컨텐츠 인식 캐싱 https://www.drupal.org/project/views_content_cache
  8. 안 DB 로깅 - 사용 https://drupal.org/project/syslog_ng
  9. (404) 오류 감소 - http://www.brokenlinkcheck.com/
  10. 빠른 404 응답 -https ://drupal.org/project/fast_404-서버 수준에서 처리해보십시오.
  11. 클라이언트 측 유효성 검사-https: //www.drupal.org/project/clientside_validation
  12. 압축 이미지-https: //www.drupal.org/project/imageapi_optimize
  13. 이미지의 게으른로드 - 음주 불필요한 이미지를로드 할 - https://www.drupal.org/project/lazyloader
  14. 스프라이트 시트 사용-https: //www.drupal.org/project/spritesheets

  15. 최소 캐시 수명 시간 값을 더 높은 수로 설정하고 캐시 지우기 모듈을 사용하여 특정 페이지의 캐시를 지우십시오- 노드를 편집 / 업데이트 할 때마다 익명 사용자의 모든 페이지 캐시가 손실됩니다

  16. Devel Module을 사용하여 쿼리를보십시오.
  17. 뷰 재 작성 쿼리가 과도 할 경우 조회를 피하거나 피하십시오.
  18. XHProf- https: //www.drupal.org/project/XHProf
  19. FPM, HHVM
  20. DB 프로파일 링 및 튜닝-https: //www.drupal.org/project/dbtuner
  21. Boost를 사용 하고 필요하지 않은 경우 DB를 부트 스트랩하지 마십시오. https://drupal.org/project/boost 대부분의 중소 사이트에 대해 Boost는 충분하며 리버스 프록시가 필요하지 않을 수 있습니다.
  22. 사용 CDN 서비스 - https://www.drupal.org/project/cdn 설정하기 쉬운.
  23. 캐시 테이블이 엄청나게 사용되는 경우 Memcached-memcached를 설치하고 RAM을 설정할 수 있다면 소리만큼 복잡하지 않습니다.
  24. Etags-Etags를 올바르게 구성하십시오. https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. 리버스 프록시 서버 -바니시 (자산의 경우 최소)를 사용하십시오. 대부분의 사용자가 익명 인 경우 많은 도움이됩니다.
  26. 압축 전송-gzip 압축 사용
  27. 유지-가능하면 영구 연결을 사용하십시오.
  28. 프로그레시브 JPEGS-
  29. 코드 캐싱-Eaton의 블로그는 훌륭합니다. http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. 캐시 온난화를 구현 - https://www.drupal.org/project/cache_warmer을 - 최종 사용자가 그들 안타 전에 캐시 페이지를 따뜻하게.
  31. Master Slave DB Config- https : //www.drupal.org/project/autoslave를 사용하면 쉽게 설정할 수 있습니다.
  32. 데이터베이스 클러스터-https: //stackoverflow.com/questions/1163216/database-cluster-and-load-balancing
  33. 로드 밸런서-http: //en.wikipedia.org/wiki/Load_balancing_ (컴퓨팅)
  34. 휴리스틱 캐시 워밍 사용-https: //www.drupal.org/project/cache_graceful
  35. 인증 된 사용자 캐싱-https: //www.drupal.org/project/authcache

2
훌륭한 대답이지만 강하게 눈에 띄는 것은 APC가 맨 위에 없다는 것입니다. APC는 쉽게 제자리에 들어가기 쉽고 단점이 없으며 이득은 실제로 클 수 있습니다. 나는 그것이 정상에 가야한다고 생각합니다. (최종 최적화가 통합되어 PHP 5.5 이후에는 필요하지 않다는 의견이있을 수 있습니다)
Letharion

1
캐싱의 가장 큰 이점에 대해 언급 할 수도 있습니까? 사이트에 대부분 정적 콘텐츠가 필요한 경우 (페이지가 모든 사용자에게 동일하므로 로그인하지 않아도 됨) Varnish 또는 Boost는 가장 큰 이득을 제공합니다.
Dominic Woodman

5

데이터베이스 계층이 중요합니다. 이 프레젠테이션의 일부와 기본 사항을 다룹니다. http://goo.gl/30yi39


멋진 프리젠 테이션 MikeyTown. 당신은 공연 전문가입니다 :)
Gokul NK

3

Gokul의 답변에 대한 동반자로서 Drupal에서 캐시하려는 내용에 대해 생각할 방법이 있습니다 (복잡성이 순서가 아님).

캐싱은 반복되는 활동의 속도를 높입니다.

Drupal 웹 사이트와 관련된 큰 반복 작업은 다음과 같습니다.

  • 웹 페이지 호출
  • 웹 페이지를 구축하기 위해 PHP 코드 실행
  • 데이터베이스에서 PHP 호출 항목

전체 웹 페이지 캐싱

가장 큰 캐싱 이점은 PHP 코드를 실행하거나 데이터베이스를 호출하지 않고 전체 웹 페이지를 캐시하는 방법을 찾는 것입니다.

Varnish 또는 Boost 로이 작업을 수행 할 수 있습니다 . 사용자가 페이지를 호출하면 계산을 수행하지 않고 페이지 사본을 반환합니다.

그러나 페이지의 일부가 달라야하는 경우 (예 : 사용자 로그인 및 이름이 맨 위에 표시됨) 작동하지 않습니다.

이를 작동 시키려면 Authcache를 조사해야합니다.

PHP 캐싱

APC로 PHP를 캐시 하거나 버전 5.5 이상인 경우 다른 캐시가 내장되어 있습니다.

이것은 서버 측에서 이루어지며 PHP 코드 덩어리가 기억됩니다. Drupal 용 PHP를 캐싱하고 있지만 기술적으로 Drupal과 상호 작용하지는 않습니다.

데이터베이스 캐싱

데이터베이스에서 정보를 가져 오는 호출은 비용이 많이 듭니다.

가장 일반적인 데이터베이스 캐싱 메커니즘은 memcache 입니다.

이렇게하면 데이터베이스 객체가 RAM에 캐시되므로 하드 드라이브의 데이터베이스 객체를 호출하는 대신 RAM에서 가져 오는 속도가 훨씬 빠릅니다.


1
Redis는 또한 내 경험상 memcache와 비교할 수있는 훌륭한 인 메모리 캐시 저장소입니다 (memcache는 클러스터링에서 이길 수는 있지만)
Clive
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.