Como melhorar o tempo de resposta do servidor?


17

O que posso fazer, além de usar um plug-in de cache como o jotcache, para melhorar o tempo de resposta do servidor do meu site?

Eu já removi todos os módulos, plugins e componentes de artigos inativos. Há algo mais que eu possa fazer para melhorá-lo?

Estou falando sobre o tempo antes do cliente (navegador) obter uma resposta à sua solicitação . E não o tempo que a página carrega.


Tempo para resposta é tempo antes de o documento php tenha terminado, assim que você quer olhar para chamadas sql e php e, em seguida, questões de cache de html eu sugiro
tristanbailey

Quando você diz o tempo de resposta do servidor - você quer dizer a resposta do servidor quando a solicitação é feita pela primeira vez ou o tempo que leva para o servidor preparar e servir a página? Execute seu site através do teste de velocidade Pingdom e publique os resultados, para que possamos oferecer soluções específicas para o problema real.
Brent Friar

Respostas:


25

Existem várias etapas que você pode executar para aumentar o desempenho do servidor. Observe que alguns deles não funcionarão com a maioria dos hosts compartilhados. Para um ótimo desempenho, você geralmente precisa de um controle mais refinado.

Como em qualquer otimização, você deve medir o efeito que isso tem no desempenho do seu site. Para otimizações básicas, são úteis ferramentas como PageSpeed e YSlow (eu recomendo as versões do Firefox). Para um entendimento mais aprofundado, você terá que medir os tempos de resposta reais do seu sistema ativo durante um período de tempo.

PHP

  1. Ativar cache de código de código

    Essa é provavelmente a maior coisa que você pode fazer para aumentar o desempenho do seu site. Eu recomendo usar o OpCache ou o APC . A configuração desses caches pode ser aprimorada para obter um desempenho ainda maior com base nas necessidades específicas dos servidores e sites, mas apenas a instalação já é um grande impulso.

  2. Atualizar versão do PHP

    A versão mais recente do PHP vem regularmente com melhorias de desempenho. Além disso, existem vários casos em que o Joomla pode usar um código melhor ao executar em uma versão mais recente do PHP. Hoje, você não deve usar uma versão PHP anterior ao PHP 5.4 se se preocupa com o desempenho.

  3. Configurações do PHP

    Nas versões mais antigas do PHP (<= 5.3), tenha o cuidado de desligar register_globalse magic_quotes_gpcobter uma vitória gratuita no desempenho. No PHP> = 5.6, mude always_populate_raw_post_datapara -1.

  4. Extensões PHP

    O Joomla contém algum código para solucionar as extensões PHP ausentes. Isso sempre será mais lento que essas extensões. Para uma melhoria de desempenho decente instalar as seguintes extensões: mbstring, zip,ftp

Servidor web

  1. Ativar gzip

    A ativação da compactação do lado do servidor comercializa a largura de banda dos recursos da CPU. Para a maioria dos sites, esta é a decisão certa. Tenha cuidado para compactar apenas dados de texto; a compactação de dados binários fornecerá a CPU atingida sem as vantagens da largura de banda. Você também pode ativar a compactação nas configurações do Joomla, mas é melhor se você deixar o servidor lidar com isso.

  2. Pré-compactar recursos estáticos

    Não estou falando de minficação (embora isso ajude também), mas você pode configurar o Nginx e o Apache para o servidor já compactar recursos, eliminando efetivamente a ocorrência de CPU na compactação gzip. Pontos de bônus: use o Zopfli para arquivos ainda menores.

  3. Use FastCGI para PHP

    Mais especificamente, você deve usar php-fpm. Isso impede a inicialização do PHP quando o navegador solicita um arquivo não PHP.

  4. Use cabeçalhos de cache apropriados

    O uso do Expirescabeçalho pode reduzir bastante os recursos do servidor necessários. Afinal, o pedido mais rápido nunca foi feito.

Apache

Geralmente eu recomendo usar o Nginx para sites de alto desempenho. Se você realmente precisa usar o Apache por algum motivo, recebi uma dica bônus:

  1. Desativar AllowOverride

    A configuração AllowOverridepara Noneevita muitas E / S de disco e

Joomla

  1. Não use o modo FTP

    Embora isso não afete os usuários que leem o site, isso atrasará algumas operações, como a instalação de extensões.

  2. Desativar extensões não utilizadas

    Isso vale especialmente para Plugins, muitos deles são executados em todas as solicitações. Desabilitar menus e componentes é útil principalmente ao listar extensões e tipos de menu disponíveis. Também tome 5 minutos para percorrer as extensões que acompanham o núcleo do Joomla e desativar as que você não usa.

  3. Desativar Preparar conteúdo

    Se você usa muitos módulos personalizados ( mod_customnão personalizados como escritos por si), verifique se é possível desativar o Preparar conteúdo nesses. Isso economiza algum processamento.

  4. Usar cache

    Se você é sério sobre desempenho, habilite o cache. Especialmente útil para ler sites pesados ​​com muitos usuários anônimos. Os usuários conectados ignoram a maior parte do cache, se você tiver muitos deles, o efeito não será tão grande.

  5. Use um manipulador de sessão alternativo

    Usando um manipulador de sessão alternativo, você pode liberar seu banco de dados para coisas mais importantes. Eu não recomendaria o arquivo (confundidamente chamado None nas configurações do Joomla), pois isso trará mais uma vez aumento de E / S de disco. O uso da APC é potencialmente o fastet, mas aumenta o risco de perder todos os dados da sessão. O meio termo certo é Memcache. Embora isso exija um processo adicional, é mais confiável que o APC e muito mais rápido do que armazenar todos os dados no banco de dados

  6. Mantenha seu site simples

    Você realmente precisa desse botão do Facebook? E o ícone fofo que ninguém vê porque está parcialmente escondido atrás de algum banner? Quanto menos seu site for exibido, mais rápido será. Além disso, sempre que possível, use CSS3 em vez de imagens.

Diversos

  1. Definir um favicon

    Graças a uma decisão que remonta ao Internet Explorer 4.0, os navegadores solicitam um arquivo chamado favicon.icosempre que um usuário visita seu site. Se você não tiver um, isso causa E / S desnecessárias, pois as respostas 404 não são armazenadas em cache. Especifique o ícone do seu site com uma meta tag HTML ou adicione um arquivo chamado favicon.icoà raiz da web. Não quer um favicon? Coloque um PNG transparente com um tamanho de 1x1 pixel nesse local. Observe que a extensão ainda precisa ser .ico.

  2. Otimize suas imagens

    É incrível o tipo de economia que se pode obter otimizando imagens, especialmente arquivos PNG. Há uma variedade de ferramentas disponíveis para qualquer sistema operacional, pessoalmente eu uso o ImageOptim, disponível para o OS X. As imagens principais do Joomla já estão otimizadas, mas passam por suas próprias imagens, especialmente os modelos são importantes. Você também pode verificar as extensões que está usando. Se eles são de código aberto, por que você não contribui com uma solicitação de recebimento contendo imagens recém-otimizadas?

O avançado

Se você realmente quer dar tudo de si, considere colocar o Varnish na frente do seu site. Ele armazena em cache os pedidos no seu site e, se possível, os serve a partir de seu próprio cache, nunca atingindo o Joomla. É uma ferramenta complexa, mas com muito poder. O Joomla não tirará proveito de funcionalidades avançadas como o Edge Side Inclui (ESI), mas seu próprio código poderia.


8
Isso parece ... bastante hostil. Apenas para sua informação, acabei de escrever isso, o texto não foi de forma alguma preparado. Sinta-se livre para pesquisar no Google. Lembre-se de que as respostas não devem apenas ajudar o questionador original, mas também os futuros usuários que encontrarem o caminho para cá.
Rouven Weßling

13

Uma GRANDE coisa que você pode fazer para melhorar o tempo de resposta do seu site é atualizar as configurações do módulo. Módulos personalizados (usando mod_custom) têm uma opção para ativar / desativar a preparação do conteúdo. Isso permite que você execute plug-ins de conteúdo no conteúdo de dados em seu módulo personalizado. É poderoso quando usado corretamente, mas adiciona tempo de renderização adicional à saída do módulo. A menos que você esteja realmente usando um plug-in de conteúdo no conteúdo de seu módulo personalizado, é melhor desativá-lo. Você verá uma diminuição no tempo de renderização do módulo ao fazer isso.

Captura de tela da configuração: insira a descrição da imagem aqui

Nota: Se minha resposta o ajudou, clique na verificação à esquerda para aceitar a resposta.


3
Eu nunca vi a seção de preparação de conteúdo antes. A que versão do Joomla isso se aplica?
TryHarder 23/04

1
se estiver ativado, os plug-ins podem ser executados no conteúdo. Então, se você colocar posições de módulo códigos curtos ou outros códigos curtos de plugin no textarea html personalizado estes não irá mostrar, você só vai ver por exemplo "{tag_name}" no website não a versão preparada
tristanbailey

2
A opção "Preparar conteúdo" está incluída no Joomla 2.5 e 3.x. A configuração padrão é "Não".
Neil Robertson

8

Suponho que você tenha administrado seu site através da velocidade da página do Google e realmente está procurando reduzir o tempo de resposta da página, ou seja, o tempo gasto pela sua marcação para ser enviado ao navegador.

Os culpados mais prováveis ​​para isso são consultas pesadas. Ative a depuração e olhe na parte inferior da página para descobrir quais são as consultas mais pesadas e remova ou reduza-as. Você também pode obter ajuda dos logs de consultas lentas do seu servidor MySQL.

A próxima coisa que você pode ver é o cache. Dependendo do tipo de site que você possui, é possível ativar o cache conservador ou progressivo. Progressivo deve ser usado em sites que não possuem recursos relacionados ao usuário.


Você pode fornecer dicas ou capturas de tela sobre como são as consultas pesadas? Existe algum limite a ser alcançado?
David Fritsch

Realmente depende da sua aplicação. No entanto, qualquer consulta que aparece no log de consulta lenta (que, nas configurações normais, registra qualquer consulta que leva mais de 1 segundo para ser executada) é uma boa candidata para interromper e / ou colocar dentro de um cache. Outra coisa que pode parecer boba, mas verifique se todas as consultas têm um LIMIT.
Ashwin Data

6

As coisas que sei que podem ajudar (a maioria das quais foram listadas) são:

  1. Armazenamento em cache
  2. Compactação (gzip seus arquivos css e js)
  3. Combinando arquivos (todo o seu css é combinado em um arquivo)
  4. Descarregando imagens e arquivos em uma CDN.

Eu usei uma combinação do cache interno do Joomla (ou mesmo do APC ativado no servidor) e plugins como o gzip ou o plug-in rockbooster do tema do foguete. Eu também uso não-plug-in CDN plugin com uma conta amazon.

Definitivamente ajuda, mas você precisa assistir ao seu site e desativar o cache para componentes com problemas. Eu tive que ignorar o CiviCRM em nosso site porque não funcionava bem com o cache. O Joomla vem com um plugin cachecontrol que pode lidar com isso.


2
combine e comprima suas imagens também quando possível. Sprites podem salvar dezenas de solicitações por carregamento de página.
ContextSwitch

Eu sempre esqueço sprites. :)
Brian Peat

lembre-se de uma coisa sobre sprites - as imagens de plano de fundo não são exibidas quando o Windows é alternado para o modo Alto contraste. Embora este comportamento é bem-vinda para gráficos gerais, é um problema para controles que têm de ser clicado pelo usuário - eles simplesmente desaparecer (exemplo: botões de votação neste site)
miroxlav

Heh Brian Peat, eu estou pensando se você pode estar interessado em nos ajudar a lançar um site do CiviCRM no StackExchange. Precisamos de committers com mais de 200 reputação em outro site do StackExchange : area51.stackexchange.com/proposals/77367/civicrm Cheers!
9788 Joe Murray

Vou dar uma olhada. Isso tudo foi baseado no Joomla e eu não fiz nenhuma programação, mas talvez eu possa ajudar com perguntas básicas.
Brian Peat

4

Você também deve procurar reduzir os ativos locais e o cache adequado. Uma coisa que você pode fazer é usar os plugins da CDN. Aqui estão dois que eu recomendaria:

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

CDN NoNumbers Para Joomla! - http://www.nonumber.nl/extensions/cdnforjoomla

Além disso, se nenhuma das opções acima parecer resolver os problemas, você poderá ter um problema mais profundo - possivelmente no seu modelo, no próprio servidor ou em outras coisas. Se for esse o caso, talvez seja melhor contratar alguém para procurar o problema e resolvê-lo por você.


3

Você também pode usar esse código no seu arquivo .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>

isso parece interessante, você pode explicar o que faz?
web-tiki

@ web-tiki Sua configuração expira os cabeçalhos. Os cabeçalhos expiram informam ao navegador se devem solicitar um arquivo específico do servidor ou se devem obtê-lo do cache do navegador. A idéia por trás do Expires Headers não é apenas reduzir a carga de downloads do servidor (baixar constantemente o mesmo arquivo quando não está modificado, desperdiçando um precioso tempo de carregamento), mas também reduzir o número de solicitações HTTP para o servidor. REFERÊNCIA gtmetrix.com/add-expires-headers.html
TryHarder

2

Eu criei mais de centenas de sites usando o Joomla!

Na maioria dos casos, as pessoas pensam que o Joomla está trabalhando pesadamente no servidor, mas, de acordo com as análises feitas por mim, a coisa mais importante para manter seu site RÁPIDO é OTIMIZAR AS IMAGENS e JS / CSS.

Não use editores do Joomla, como o JCE, apenas para alterar o tamanho da imagem. Use editores de imagem como o photoshop ou qualquer outro editor para redimensionar suas imagens para o tamanho necessário!

Use ferramentas de compactação JS / CSS.

Sempre usamos as Ferramentas Pingdom para analisar a velocidade do site e usamos o recurso incorporado do T3 Framework para otimizar JS / CSS!


Quais ferramentas você usa para compactar JS / CSS? Alguma recomendação sobre como alguém poderia analisar o site como você fez em seus sites?
David Fritsch

Sempre usamos as ferramentas Pingdom para analisar a velocidade do site e usamos o recurso incorporado do T3 Framework para otimizar JS / CSS!
Gev Balyan

2
Também usei com êxito o JCH optimize para obter grande parte da compactação e minificação. Outra opção é usar o mod_pagespeed do Apache, que basicamente implementa a maioria das recomendações do Google Pagespeed.
Ashwin Data

2
Todas boas ferramentas. @ GevBalyan, eu recomendo adicionar coisas como essa em sua resposta com links. Economiza pessoas pesquisando no Google! Você pode até editar esta resposta para adicioná-la a essa. :)
David Fritsch

As ferramentas de compactação que não armazenam em cache podem realmente aumentar o tempo de resposta do servidor, pois adiciona tempo de processamento à resposta do servidor.
Don Gilbert

1

Você removeu plugins não utilizados? O Joomla precisa carregar e processar todos os plugins publicados para eventos acionados em uma solicitação.

Você precisa entender as extensões que instalou e como elas interagem com o Joomla!

Muitas extensões instalam plug-ins que gerenciam conteúdo, sistema ou atividades do usuário para iniciar funções de código. Alguns deles podem ser supérfluos.

Eu sei que o k2 instala muitos plugins que respondem a eventos relacionados ao idioma que não produzem saída real para sites de idioma único. Cancelar a publicação desses plug-ins pode reduzir o tempo de processamento.


Você pode falar mais sobre isso? O que você quer dizer com "eventos desencadeados"? Como posso saber quais eventos são acionados?
22414 David Fritsch

1
Boa pergunta. Você precisa entender as extensões que instalou e como elas interagem com o Joomla! Muitas extensões instalam plug-ins que gerenciam atividades de conteúdo, sistema ou usuário para iniciar funções de código. Alguns deles podem ser supérfluos. Eu sei que o k2 instala muitos plugins que respondem a eventos relacionados ao idioma que não produzem saída real para sites de idioma único. Cancelar a publicação desses plug-ins pode reduzir o tempo de processamento. Da mesma forma, o próprio K2 tem o péssimo hábito de criar consultas caras para produzir métricas duplamente dignas.
Joomsavvy

1
Você poderia atualizar sua resposta com as informações em seu comentário?
Harald Leithner

1

Melhore os recursos do plano de hospedagem / servidor

Talvez não seja a resposta que o OP estava procurando, mas vale a pena mencionar, caso não seja óbvio para todos (e nenhuma outra resposta tenha mencionado isso ainda): melhore os recursos do servidor, como memória, CPU e velocidade do disco.

Se você estiver usando hospedagem compartilhada na Web, a atualização do plano "econômico" para o plano "comercial" ou outro plano mais avançado pode melhorar os recursos do servidor disponíveis no seu site e reduzir o tempo de resposta do servidor. Mudar para uma empresa de hospedagem de melhor qualidade (por exemplo, com servidores de hospedagem compartilhada menos lotados) também pode ajudar.

Um plano de hospedagem melhor também pode fornecer acesso a aprimoramentos de desempenho que não estão incluídos no plano de hospedagem básico. Por exemplo, os planos de hospedagem "GrowBig" e "GoGeek" SiteGround incluem cache dinâmico, o que ajuda a reduzir significativamente o tempo de resposta do servidor. A opção de cache dinâmico não está disponível no plano "Inicialização".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.