Лучшие практики для повышения производительности сайтов Plone за Apache

У меня есть небольшое количество сайтов Plone, работающих на виртуальных хостах сервера Apache 2.4. У меня есть сильное чувство, что представление могло бы быть намного лучше.

Давайте предположим довольно простую настройку для сайта Plone:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    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>

В этой настройке почти все делается сервером Zope, слушающим порт 8080, который запускает сайт Plone в виртуальной папке /example (который живет в объектной базе данных).

Теперь этот сервер предоставляет некоторые статические ресурсы, например изображения и таблицы стилей (которые находятся в файловой системе), а также некоторые псевдостатические ресурсы, такие как компиляция сценариев или таблиц стилей с именем с меткой времени (у которого нет расположения в файловой системе).

Некоторые статические ресурсы имеют пути, которые дают подсказки, где расположен физический ресурс (например, /++resource++browsername/name-of-script.js, где browsername это подсказка); другие взяты из так называемых скинов (то есть из первого скина, который их содержит), без простого способа определить местоположение файловой системы по имени скина (что в любом случае не будет известно из ответа).

Такие запросы не должны обрабатываться базовым сервером Zope с использованием одного из его потоков. Каковы рекомендуемые стратегии, чтобы держаться подальше от Zope, что Apache может делать сам (более эффективно и без блокировки потоков Zope), и кэшировать содержимое?

Таким образом, полное решение может включать в себя

  • отображение различных путей статических ресурсов в известное расположение файловой системы, где это возможно
  • пробовать несколько мест для статических ресурсов, которые взяты из скинов
  • кэширование сгенерированных ресурсов (например, HTML-страниц или компиляций CSS или Javascript)

и, с настройкой ZEO,

  • распределение нагрузки (распределение запросов нескольким клиентам ZEO, которые, в свою очередь, общаются с сервером ZEO)

Любые руководства по конфигурации где-нибудь?

1 ответ

Основная цель Plone - предоставить многопользовательскую систему управления контентом, которая позволяет совместно редактировать веб-сайты. Цена - это динамическое создание презентации веб-контента и некоторая потеря скорости. Если вам нужны маленькие, быстрые веб-сайты, которые вы в основном редактируете сами, то вам лучше воспользоваться программой-генератором, которая создает статические веб-сайты для вас. Многие из них доступны как коммерчески, так и с открытым исходным кодом. Сказав это, в принципе, вы можете комбинировать как динамически, так и статически сгенерированный контент из всех источников за Apache, например, http://httpd.apache.org/docs/2.4/urlmapping.html, на любом листовом узле древовидной структуры. сайта.

Другие вопросы по тегам