서버 응답 시간을 개선하는 방법?


17

웹 사이트 의 서버 응답 시간개선 하기 위해 jotcache와 같은 캐시 플러그인을 사용하는 것 외에는 무엇을 할 수 있습니까?

비활성 기사 모듈, 플러그인 및 구성 요소를 이미 모두 제거했습니다. 개선하기 위해 다른 방법이 있습니까?

클라이언트 (브라우저)가 자신의 요청에 응답하기 전의 시간 에 대해 이야기하고 있습니다. 그리고 페이지가로드되는 시간이 아닙니다.


PHP는 문서가 완료되기 전에 SQL 및 PHP는 통화를보고 다음 캐시 HTML 질문은 내가 좋을 것 할 수 있도록 응답 시간, 시간
tristanbailey

서버 응답 시간을 말하면-요청이 처음 이루어질 때 서버의 응답을 의미합니까, 아니면 서버가 페이지를 준비하고 서비스하는 데 걸리는 시간을 의미합니까? Pingdom 속도 테스트를 통해 사이트를 실행하고 결과를 게시하면 실제 문제에 대한 특정 솔루션을 제공 할 수 있습니다.
Brent Friar

답변:


25

서버 측 성능을 높이기 위해 수행 할 수있는 몇 가지 단계가 있습니다. 이 중 일부는 대부분의 공유 호스트에서 작동하지 않습니다. 뛰어난 성능을 위해서는 일반적으로 더 세밀한 제어가 필요합니다.

모든 최적화와 마찬가지로 사이트 성능에 미치는 영향을 측정해야합니다. 기본 최적화에는 PageSpeedYSlow 와 같은 도구가 유용합니다 (Firefox 버전을 권장합니다). 보다 심도 깊은 이해를 위해서는 일정 기간 동안 실제 시스템의 실제 응답 시간을 측정해야합니다.

PHP

  1. Opcode 캐싱 사용

    이것은 아마도 사이트 성능을 향상시키기 위해 할 수있는 가장 큰 일입니다. OpCache 또는 APC 를 사용하는 것이 좋습니다 . 이러한 캐시의 구성은 서버 및 사이트 별 요구에 따라 훨씬 더 높은 성능을 위해 조정할 수 있지만 설치는 이미 크게 향상되었습니다.

  2. PHP 버전 업데이트

    최신 PHP 버전에는 정기적으로 성능이 향상됩니다. 또한 Joomla가 최신 PHP 버전에서 실행할 때 더 나은 코드를 사용할 수있는 경우가 많이 있습니다. 현재 성능에 관심이 있다면 PHP 5.4 이전의 PHP 버전을 사용하지 않아야합니다.

  3. PHP 설정

    오래된 PHP 버전에 (<= 5.3) 테이크 케어 끕니다 register_globalsmagic_quotes_gpc무료 성능 승리를 위해. PHP> = 5.6 always_populate_raw_post_data에서 -1로 변경하십시오 .

  4. PHP 확장

    Joomla에는 누락 된 PHP 확장을 해결하기위한 코드가 포함되어 있습니다. 이 확장명보다 항상 느립니다. 괜찮은 성능 향상을 위해 다음과 같은 확장을 설치 : mbstring, zip,ftp

웹 서버

  1. gzip 사용

    서버 측 압축을 활성화하면 CPU 리소스에 대한 대역폭이 거래됩니다. 대부분의 사이트에는 이것이 올바른 전화입니다. 텍스트 데이터 만 압축하도록주의하십시오. 이진 데이터를 압축하면 대역폭 이점없이 CPU 히트가 발생합니다. Joomla 설정에서 압축을 활성화 할 수도 있지만 서버에서이를 처리하도록하는 것이 좋습니다.

  2. 정적 리소스 사전 압축

    나는 축소에 대해 이야기하지는 않지만 (이것도 도움이되지만) 이미 압축 된 리소스를 서버로 Nginx와 Apache를 구성하여 gzip 압축에서 CPU 적중을 효과적으로 제거 할 수 있습니다. 보너스 포인트 : 더 작은 파일 에는 Zopfli 를 사용하십시오 .

  3. PHP에 FastCGI 사용

    보다 구체적으로을 사용해야합니다 php-fpm. 브라우저가 비 PHP 파일을 요청할 때 PHP가 시작되지 않습니다.

  4. 적절한 캐시 헤더를 사용하십시오

    Expires헤더를 사용하면 필요한 서버 리소스를 크게 줄일 수 있습니다. 모든 가장 빠른 요청은 결코 완료되지 않은 요청입니다.

아파치

일반적으로 고성능 사이트에는 Nginx를 사용하는 것이 좋습니다. 어떤 이유로 든 아파치를 사용해야하는 경우 보너스 팁이 있습니다.

  1. AllowOverride 비활성화

    많은 디스크 IO AllowOverrideNone방지하기위한 설정

줌라

  1. FTP 모드를 사용하지 마십시오

    사이트를 읽는 사용자에게는 영향을 미치지 않지만 확장 설치와 같은 일부 작업은 느려집니다.

  2. 사용하지 않는 확장 기능 끄기

    이것은 특히 플러그인에 적용되며, 대부분은 모든 요청에서 실행됩니다. 메뉴 및 구성 요소를 비활성화하면 사용 가능한 확장 및 메뉴 유형을 나열 할 때 주로 도움이됩니다. 또한 Joomla 코어와 함께 제공되는 확장 프로그램을 통해 5 분 정도 걸리고 사용하지 않는 확장 기능을 비활성화하십시오.

  3. 콘텐츠 준비 끄기

    많은 사용자 정의 모듈을 사용하는 경우 ( mod_custom자체 작성과 같이 사용자 정의가 아닌) 해당 모듈 에서 컨텐츠 준비를 비활성화 할 수 있는지 확인하십시오. 이것은 약간의 처리를 절약합니다.

  4. 캐싱 사용

    성능이 중요하다면 캐싱을 사용하도록 설정해야합니다. 익명 사용자가 많은 무거운 사이트를 읽는 데 특히 유용합니다. 로그인 한 사용자는 대부분의 캐시를 무시합니다. 이러한 캐시가 많으면 그 효과는 크지 않습니다.

  5. 대체 세션 핸들러 사용

    대체 세션 핸들러를 사용하면 더 중요한 것을 위해 데이터베이스를 비울 수 있습니다. 디스크 IO가 다시 증가하기 때문에 파일 (Joomla 설정에서 None이라고 혼동 됨)을 권장하지 않습니다. APC를 사용하는 것이 잠재적으로 빠르지 만 모든 세션 데이터를 잃어 버릴 위험이 높아집니다. 오른쪽 중간 지점은 Memcache입니다. 이를 위해서는 추가 프로세스가 필요하지만 APC보다 안정적이며 모든 데이터를 데이터베이스에 저장하는 것보다 훨씬 빠릅니다.

  6. 사이트를 단순하게 유지

    당신은 정말 그 페이스 북 버튼이 필요합니까? 배너 뒤에 숨겨져있어 아무도 볼 수없는 귀여운 아이콘은 어떻습니까? 사이트 표시가 적을수록 더 빠릅니다. 또한 가능한 경우 이미지 대신 CSS3을 사용하십시오.

여러 가지 잡다한

  1. 파비콘 설정

    Internet Explorer 4.0 브라우저로 거슬러 올라간 결정에 감사하여 favicon.ico사용자가 사이트를 방문 할 때마다 호출되는 파일을 요청합니다 . 하나가 없으면 404 응답이 캐시되지 않으므로 불필요한 IO가 발생합니다. HTML 메타 태그로 사이트 아이콘을 지정하거나 favicon.ico웹 루트에 호출 된 파일을 추가하십시오 . 파비콘을 원하지 않습니까? 해당 위치에 1x1 픽셀 크기의 투명 PNG를 배치하십시오. 확장명은 여전히이어야합니다 .ico.

  2. 이미지 최적화

    이미지, 특히 PNG 파일을 최적화하면 어떤 종류의 절약 효과를 얻을 수 있는지 놀랍습니다. OS X에서 사용할 수있는 ImageOptim 을 개인적으로 사용하는 모든 운영 체제에 사용할 수있는 다양한 도구 가 있습니다. Joomla의 핵심 이미지는 이미 최적화되어 있지만 자신의 이미지를 통해 이동합니다. 특히 템플릿이 중요합니다. 사용중인 확장을 확인할 수도 있습니다. 이들이 오픈 소스 인 경우 새로 최적화 된 이미지가 포함 된 풀 요청을 제공하지 않는 이유는 무엇입니까?

고급

정말로 모든 것을 끝내고 싶다면 사이트 앞에 바니시 를 두십시오. 요청을 사이트에 캐시하고 가능하면 자체 캐시에서 요청을 처리하며 Joomla에 절대로 영향을 미치지 않습니다. 복잡한 도구이지만 많은 기능이 있습니다. Joomla는 ESI (Edge Side Includes)와 같은 고급 기능을 활용하지 않지만 사용자 고유의 코드는 가능합니다.


8
비우호적 인 것 같습니다. 참고로, 나는 방금 이것을 썼으며 텍스트는 전혀 준비되지 않았습니다. Google에 자유롭게 문의하십시오. 답변은 원어민에게 도움이 될뿐만 아니라 여기에서 길을 찾는 미래의 사용자에게도 도움이되어야합니다.
Rouven Weßling

13

사이트의 응답 시간을 향상시키기 위해 할 수있는 한 가지 큰 일은 모듈 설정을 업데이트하는 것입니다. 사용자 정의 모듈 (mod_custom 사용)에는 컨텐츠 준비를 활성화 / 비활성화하는 옵션이 있습니다. 이를 통해 사용자 정의 모듈 내의 데이터 컨텐츠에서 컨텐츠 플러그인을 실행할 수 있습니다. 올바르게 사용하면 강력하지만 모듈 출력에 렌더링 시간이 추가됩니다. 실제로 사용자 정의 모듈 컨텐츠 내에서 컨텐츠 플러그인을 사용하지 않는 한,이를 해제하는 것이 가장 좋습니다. 이렇게하면 모듈 렌더링 시간이 줄어 듭니다.

설정 스크린 샷 : 여기에 이미지 설명을 입력하십시오

참고 : 답변이 도움이 되었으면 왼쪽의 체크 표시를 클릭하여 답변을 수락하십시오.


3
콘텐츠 준비 섹션을 본 적이 없습니다. 어떤 버전의 Joomla가 적용됩니까?
TryHarder

1
켜져 있으면 플러그인이 컨텐츠에서 실행될 수 있습니다. 따라서 사용자 정의 html 텍스트 영역에 모듈 위치 짧은 코드 또는 다른 플러그인 짧은 코드를 넣으면 표시되지 않습니다. 예를 들어 웹 사이트에서 준비된 버전이 아닌 "{tag_name}"을 볼 수 있습니다
tristanbailey

2
"내용 준비"옵션은 Joomla 2.5 및 3.x에 포함되어 있습니다. 기본 설정은 "아니오"입니다.
닐 로버트슨

8

귀하는 Google 페이지 속도를 통해 귀하의 사이트를 운영하고 있으며 실제로 페이지 응답 시간, 즉 마크 업이 브라우저로 전송되는 데 걸리는 시간을 줄이고 자한다고 가정합니다.

이것의 가장 큰 범인은 무거운 쿼리입니다. 디버그를 켜고 페이지 맨 아래에서 가장 많은 쿼리를 찾아 제거하거나 줄이십시오. MySQL 서버의 느린 쿼리 로그를 도울 수도 있습니다.

다음으로 볼 수있는 것은 캐싱입니다. 사이트의 종류에 따라 보수적 또는 점진적 캐싱을 설정할 수 있습니다. 프로그레시브는 사용자 관련 기능이없는 사이트에서 사용됩니다.


무거운 쿼리의 모양에 대한 팁이나 스크린 샷을 제공 할 수 있습니까? 도달 할 임계 값이 있습니까?
David Fritsch

실제로 응용 프로그램에 따라 다릅니다. 그러나 느린 쿼리 로그 (일반 설정에서 실행하는 데 1 초 이상 걸리는 쿼리를 기록하는 쿼리)에 표시되는 쿼리는 캐시를 분리 및 / 또는 넣을 수있는 좋은 후보입니다. 어리석게 들릴 수도 있지만 모든 쿼리에 제한이 있는지 확인하십시오.
Ashwin 날짜

6

내가 아는 것이 도움이 될 수있는 것들 (대부분 나열되어 있음)은 다음과 같습니다.

  1. 캐싱
  2. 압축 (CSS 및 JS 파일 gzip)
  3. 파일 결합 (모든 CSS가 하나의 파일로 결합 됨)
  4. 이미지 및 파일을 CDN으로 오프로드

내장 Joomla 캐시 (또는 서버에서 APC 사용 가능)와 gzip 또는 로켓 테마의 rockbooster 플러그인과 같은 플러그인을 조합하여 사용했습니다. 또한 아마존 계정으로 nonumbers CDN 플러그인을 사용합니다.

확실히 도움이되지만 문제가있는 구성 요소에 대해서는 사이트를보고 캐시를 비활성화해야합니다. 우리 사이트에서 CiviCRM을 우회해야했습니다. Joomla는이를 처리 할 수있는 cachecontrol 플러그인을 제공합니다.


2
가능하면 이미지를 결합하고 압축하십시오. 스프라이트는 페이지로드 당 수십 개의 요청을 저장할 수 있습니다.
ContextSwitch

나는 항상 스프라이트를 잊어 버립니다. :)
Brian Peat

스프라이트와 관련하여 한 가지 염두에 두어야합니다. Windows가 고 대비 모드로 전환되면 배경 이미지가 표시되지 않습니다. 이 동작은 일반적인 그래픽에는 적합하지만 사용자가 클릭해야하는 컨트롤에는 문제가됩니다.이 컨트롤은 사라집니다 (예 :이 사이트의 투표 버튼)
miroxlav

Brian Peat, StackExchange에서 CiviCRM 사이트를 시작하는 데 도움이 될지 궁금합니다. 우리는 다른 StackExchange 사이트에서 200 명 이상의 명성을 가진 커미터가 필요합니다 : area51.stackexchange.com/proposals/77367/civicrm Cheers!
Joe Murray

내가 볼게 이것은 모두 Joomla를 기반으로했으며 프로그래밍을하지 않았지만 기본적인 질문에 도움을 줄 수 있습니다.
Brian Peat

4

또한 로컬 자산을 줄이고 적절한 캐싱을 검토하려고합니다. CDN 플러그인을 사용하면됩니다. 다음은 내가 권장하는 두 가지입니다.

'corePHP'jomCDN- https: //www.corephp.com/joomla-products/jomcdn

Joomla를위한 NoNumbers CDN! -http: //www.nonumber.nl/extensions/cdnforjoomla

또한 위의 방법으로 문제를 해결하지 못하는 경우 템플릿, 서버 자체 또는 기타 다른 문제와 같이 더 깊은 문제가있을 수 있습니다. 이 경우 누군가를 고용하여 문제를 찾아 내고 해결하는 것이 가장 좋습니다.


3

.htaccess 파일에서이 코드를 사용할 수도 있습니다.

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.your domain [nocase]
RewriteRule ^(.*)         http://your domain/$1 [last,redirect=301]
RewriteEngine on
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

이것은 흥미로운 것 같습니다, 그것이 무엇을하는지 설명 할 수 있습니까?
웹 티키

@ web-tiki 설정이 헤더를 만료합니다. Expires 헤더는 서버에 특정 파일을 요청해야하는지 또는 브라우저의 캐시에서 파일을 가져와야하는지 브라우저에 알려줍니다. Expires Headers의 기본 개념은 서버에서 다운로드의로드를 줄이는 것 (수정되지 않은 경우 동일한 파일을 다운로드하는 것이 소중한로드 시간을 낭비하는 것)이 아니라 서버에 대한 HTTP 요청 수를 줄이는 것입니다. 참조 gtmetrix.com/add-expires-headers.html
TryHarder

2

Joomla를 사용하여 수백 개의 웹 사이트를 만들었습니다!

대부분의 경우 사람들은 Joomla가 서버에서 많은 작업을하고 있다고 생각하지만 저의 분석에 따르면 웹 사이트를 빠르게 유지하는 가장 중요한 것은 이미지와 JS / CSS를 최적화하는 것입니다.

JCE와 같은 Joomla 편집기를 사용하여 이미지 크기 만 변경하지 마십시오. 포토샵이나 다른 편집기와 같은 이미지 편집기를 사용하여 필요한 크기로 이미지 크기를 조정하십시오!

JS / CSS 압축 도구를 사용하십시오.

우리는 항상 Pingdom Tools를 사용하여 웹 사이트 속도를 분석하고 T3 Framework의 내장 기능을 사용하여 JS / CSS를 최적화합니다!


JS / CSS 압축에 어떤 도구를 사용합니까? 귀하의 사이트를 위해 한 것처럼 누군가가 웹 사이트를 분석하는 방법에 대한 권장 사항이 있습니까?
David Fritsch

우리는 항상 Pingdom Tools를 사용하여 웹 사이트 속도를 분석하고 T3 Framework의 내장 기능을 사용하여 JS / CSS를 최적화합니다!
Gev Balyan

2
또한 많은 압축 및 축소를 달성하기 위해 JCH 최적화를 성공적으로 사용했습니다. 또 다른 옵션은 기본적으로 대부분의 Google Pagespeed 권장 사항을 구현하는 Apache의 mod_pagespeed를 사용하는 것입니다.
Ashwin 날짜

2
모든 좋은 도구. @GevBalyan, 링크가있는 답변에 이와 같은 것을 추가하는 것이 좋습니다. 사람들을 인터넷 검색에 저장합니다! 이 답변을 편집하여이 답변에 추가 할 수도 있습니다. :)
David Fritsch

캐시하지 않는 압축 도구는 서버 응답에 처리 시간을 추가하므로 실제로 서버 응답 시간을 늘릴 수 있습니다.
Don Gilbert

1

사용하지 않는 플러그인을 제거 했습니까? Joomla는 요청에서 트리거 된 이벤트에 대해 게시 된 모든 플러그인을로드하고 처리해야합니다.

설치 한 확장 기능과 Joomla와의 상호 작용 방식을 이해해야합니다!

많은 확장 프로그램은 코드 기능을 시작하기 위해 컨텐츠, 시스템 또는 사용자 활동을 관리하는 플러그인을 설치합니다. 그들 중 일부는 불필요한 것일 수 있습니다.

k2는 단일 언어 사이트에 대한 실제 출력을 생성하지 않는 언어 관련 이벤트에 응답하는 많은 플러그인을 설치한다는 것을 알고 있습니다. 해당 플러그인을 게시 취소하면 처리 시간이 단축 될 수 있습니다.


이것에 대해 더 이야기 할 수 있습니까? "이벤트 발생"이란 무엇입니까? 어떤 이벤트가 트리거되는지 어떻게 알 수 있습니까?
David Fritsch

1
좋은 질문. 설치 한 확장 기능과 Joomla와의 상호 작용 방식을 이해해야합니다! 많은 확장 프로그램은 코드 기능을 시작하기 위해 컨텐츠, 시스템 또는 사용자 활동을 관리하는 플러그인을 설치합니다. 그들 중 일부는 불필요한 것일 수 있습니다. k2는 단일 언어 사이트에 대한 실제 출력을 생성하지 않는 언어 관련 이벤트에 응답하는 많은 플러그인을 설치한다는 것을 알고 있습니다. 해당 플러그인을 게시 취소하면 처리 시간이 단축 될 수 있습니다. 마찬가지로 K2 자체도 값 비싼 쿼리를 작성하여 가치있는 측정 항목을 생성하는 나쁜 습관이있었습니다.
Joomsavvy

1
댓글에 정보를 입력하여 답변을 업데이트 해 주시겠습니까?
Harald Leithner

1

서버 / 웹 호스팅 계획 리소스 향상

아마도 OP가 찾고 있던 대답은 아니지만 모든 사람에게 명확하지 않은 경우를 대비하여 언급 할 가치가 있습니다 (아직 다른 대답은 아직 언급하지 않았습니다). 메모리, CPU 및 디스크 속도와 같은 서버 리소스를 개선하십시오.

공유 웹 호스팅을 사용하는 경우 "경제"계획에서 "사업"계획 또는 다른 고급 계획으로 업그레이드하면 웹 사이트에서 사용 가능한 서버 자원이 향상되고 서버 응답 시간이 단축 될 수 있습니다. 더 나은 품질의 호스팅 회사 (예 : 혼잡하지 않은 공유 웹 호스팅 서버)로 이전하는 것도 도움이 될 수 있습니다.

더 나은 호스팅 계획을 통해 기본 호스팅 계획에 포함되지 않은 성능 향상에 액세스 할 수도 있습니다. 예를 들어 "GrowBig"및 "GoGeek"SiteGround 호스팅 계획에는 서버 응답 시간을 크게 줄이는 데 도움이되는 동적 캐시가 포함됩니다. "스타트 업"계획에서 동적 캐시 옵션을 사용할 수 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.