Назад | Перейти на главную страницу

Лучшие практики для повышения производительности сайтов 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 с использованием одного из его потоков. Каковы рекомендуемые стратегии, позволяющие избегать того, что Apache может делать сам (более эффективно и без блокировки потоков Zope), и кэшировать содержимое?

Итак, полное решение может включать

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

Какие-нибудь руководства по настройке где-нибудь?

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