Лучшие практики для повышения производительности сайтов 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, на любом листовом узле древовидной структуры. сайта.