Jump to main content Jump to doc navigation

Плагин статического кэширования для MODX Revolution

Extra statcache состоит из плагина MODX Revolution, который записывает статические представления полностью кэшируемых ресурсов MODX в настраиваемое место на файловой системе. Затем rewrite-движок веб-сервера (или аналог) может отдавать статические файлы первыми, если они существуют. MODX (и PHP) обходятся, что позволяет обслуживать потенциально тысячи запросов в секунду. Минус: динамический контент не отдаётся.

Требования

  • MODX Revolution 2.1.x или новее
  • Apache или NGINX

GitHub: https://github.com/opengeek/statcache Issues: https://github.com/opengeek/statcache/issues

Установите statcache через Package Manager.

Конфигурация веб-сервера для nginx

После установки extra и включения плагина StaticCache, который генерирует статические файлы, настройте nginx отдавать их первыми, добавив правила перед стандартными правилами MODX для nginx:

MODX в DOCUMENT_ROOT

location / {
    try_files /statcache$uri~index.html /statcache$uri $uri $uri/ @modx-rewrite;
}
location @modx-rewrite {
    rewrite ^/(.*)$ /index.php?q=$1 last;
}

nginx сначала ищет статическое представление запрошенного ресурса в каталоге statcache/ внутри document root, затем выполняет стандартные проверки MODX. Вариант с ~index.html обрабатывает URI MODX с завершающим /. Плагин записывает их как файлы ~index.html для корректной отдачи веб-сервером.

MODX в подкаталоге DOCUMENT_ROOT

location /modx {
    try_files /modx/statcache$uri~index.html /modx/statcache$uri $uri $uri/ @modx-rewrite2;
}
location @modx-rewrite2 {
    rewrite ^/(.[^/]*)/(.*)$ /$1/index.php?q=$2 last;
}

nginx ищет статическое представление в statcache/ внутри MODX_BASE_PATH перед стандартными проверками MODX. Вариант с ~index.html обрабатывает URI с завершающим /.

Конфигурация веб-сервера для Apache

После установки extra и включения плагина StaticCache добавьте в .htaccess Apache правила перед стандартными правилами MODX:

MODX в DOCUMENT_ROOT

# If MODX is directly in your DOCUMENT_ROOT,
# add this before your MODX Friendly URLs RewriteCond's and RewriteRule...
RewriteCond %{DOCUMENT_ROOT}/statcache%{REQUEST_URI}/~index.html -f
RewriteRule ^(.*)$ statcache/$1~index.html [L,QSA]

RewriteCond %{DOCUMENT_ROOT}/statcache%{REQUEST_URI} -f
RewriteRule ^(.*)$ statcache/$1 [L,QSA]

MODX в подкаталоге DOCUMENT_ROOT

# If MODX is in a subdirectory of your DOCUMENT_ROOT,
# add this before your MODX Friendly URLs RewriteCond's and RewriteRule...
RewriteCond %{DOCUMENT_ROOT}/modx/statcache%{REQUEST_URI}/~index.html -f
RewriteRule ^(.*)$ modx/statcache/$1~index.html [L,QSA]

RewriteCond %{DOCUMENT_ROOT}/modx/statcache%{REQUEST_URI} -f
RewriteRule ^(.*)$ modx/statcache/$1 [L,QSA]

Исключение для POST-запросов и query string, чтобы они шли напрямую в MODX:

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*

Примечание: эти две строки нужны дважды, перед первым и вторым набором правил.

Устранение неполадок

  • Убедитесь, что каталог «statcache» есть в web root и доступен для записи PHP
  • Проверьте, что «OnBeforeSaveWebPageCache» и «OnSiteRefresh» отмечены в System Events.

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more