Práticas recomendadas para aumentar o desempenho de sites Plone por trás do Apache

1

Eu tenho um pequeno número de sites Plone rodando em hosts virtuais de um servidor Apache 2.4. Tenho a strong impressão de que o desempenho pode ser muito melhor.

Vamos supor uma configuração bem básica para um site Plone:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName www.example.com
    CustomLog /var/log/httpd/vhost-example.log combined
    ErrorLog /var/log/httpd/vhost-example.error.log
    RewriteEngine on

    DocumentRoot /opt/zope/instances/example/htdocs
    ErrorDocument 502 /error-500.html
    ErrorDocument 503 /error-500.html

    RewriteEngine On
    RewriteRule ^/(.*) http://localhost:8080/VirtualHostBase/http/%{HTTP_HOST}:80/example/VirtualHostRoot/$1 [L,P]
</VirtualHost>

Nesta configuração, quase tudo é feito pelo servidor Zope, escutando a porta 8080 , que executa o site Plone na pasta virtual /example (que mora no banco de dados de objetos).

Agora, este servidor fornece alguns recursos estáticos, por exemplo imagens e folhas de estilo (que vivem no sistema de arquivos) e alguns recursos pseudo-estáticos, como compilações de scripts ou folhas de estilo com um nome com registro de data e hora (que não tem uma localização no sistema de arquivos).

Alguns recursos estáticos têm caminhos que fornecem dicas onde o recurso físico está localizado (por exemplo, /++resource++browsername/name-of-script.js , onde browsername é a dica); outras são tiradas das chamadas skins (ou seja, da primeira capa que as contém), sem uma maneira fácil de informar a localização do sistema de arquivos a partir do nome da capa (que, de qualquer forma, não seria conhecido pela resposta).

Tais pedidos não precisariam ser manipulados pelo servidor Zope, usando um dos seus threads. Quais são as estratégias recomendadas para manter longe do Zope o que o Apache poderia fazer sozinho (mais eficientemente, e sem bloquear os threads do Zope), e para armazenar o conteúdo em cache?

Assim, uma solução completa pode incluir

  • mapeamento de caminhos distintos de recursos estáticos para a localização do sistema de arquivos conhecido, onde possível
  • tentando vários locais para recursos estáticos retirados de capas
  • armazenamento em cache de recursos gerados (por exemplo, páginas HTML ou compilações de CSS ou Javascript)

e, com a configuração do ZEO,

  • balanceamento de carga (distribuição de solicitações para vários clientes ZEO que, por sua vez, falam com o servidor ZEO)

Quaisquer guias de configuração em qualquer lugar?

    
por Tobias 03.06.2015 / 16:04

1 resposta

1

O principal objetivo do Plone é fornecer um sistema de gerenciamento de conteúdo multiusuário que permita editar websites de forma colaborativa. O preço é a criação dinâmica da apresentação do conteúdo da web e alguma perda de velocidade. Se você quiser sites pequenos e rápidos que você edite na maior parte do tempo, então você pode estar melhor com um software gerador que cria sites estáticos para você. Um grande número deles está disponível comercialmente e de código aberto. Dito isto, em princípio, você pode combinar conteúdo gerado dinamicamente e estaticamente de todos os tipos de fontes por trás do apache, por exemplo. link , em qualquer nó de folha da estrutura de árvore do site.

    
por 04.06.2015 / 18:39