Долгая загрузка страниц сайта на MODx Evo

vold57
На сайте с 01.10.2007
Offline
261
1624

Проблема – страницы сайта грузятся по 10 и более сек.

Сайт на MODx Evo 1.0.8, около 15к страниц, расположен на VDS.

Структура страниц такая:

Страница

--------- дочерняя страница

---------------------------- дочерняя страница

На страницах выводилась навигация и 2 блока анонсов с помощью Ditto, то есть Ditto использовался на странице 3 раза. Так же на странице было какое-то количество изображений, максимум до 1мб. в сумме, коды 2 партнерок и карта Google.

Сейчас отключили все 3 Ditto, изображения, коды форм партнерок и карту Google, но ситуация с загрузкой не изменилась.

В чем проблема и как ее решить?

P.S. Сейчас сайт в разработке. Неоднократно удаляли контент и заливали заново, поэтому ID идут сейчас не с 0, а где-то с 40к.

Аудит сайтов - главная часть это тщательная ручная работа, а не отчеты сервисов и программ (https://vold57.com/audit). Продвижение сайтов (https://vold57.com/seo)
IL
На сайте с 20.04.2007
Offline
435
#1
vold57:
В чем проблема и как ее решить?
vold57:
Сайт на MODx Evo 1.0.8, около 15к страниц, расположен на VDS.

Если на VDS - в первую очередь смотреть slow query log от mysql

В MODx при таких объёмах документов имеет смысл делать отдельные таблицы, выносить однотипные документы отдельно и писать свои "узкоспециализированные" сниппеты - они веселее, чем универсальные (в т.ч. Ditto)

(т.е. выделить сущности, количество которых велико - к примеру, таблицу отелей вынести..)

p.s. Если заглянуть в каталог cache и отсортировать файлы по размеру DESC ?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
vold57
На сайте с 01.10.2007
Offline
261
#2
ivan-lev:
Если на VDS - в первую очередь смотреть slow query log от mysql

В MODx при таких объёмах документов имеет смысл делать отдельные таблицы, выносить однотипные документы отдельно и писать свои "узкоспециализированные" сниппеты - они веселее, чем универсальные (в т.ч. Ditto)

(т.е. выделить сущности, количество которых велико - к примеру, таблицу отелей вынести..)

p.s. Если заглянуть в каталог cache и отсортировать файлы по размеру DESC ?

К сожалению, я не программист. Пытался найти исполнителя, но пока так и не получилось. Беда с этим у MODx, форума достойного нет.

Насчет "узкоспециализированных" сниппетов вместо Ditto, думаю как о втором этапе оптимизации, так как отключение Ditto не привело к убыстрению загрузки, а значит есть причины посущественней. Очевидно нужно в первую очередь "реализовывать отдельные таблицы и выносить однотипные документы отдельно".

---------- Добавлено 29.01.2013 в 16:47 ----------

Может ли переезд с VDS на сервер решить проблему и в какой степени?

IL
На сайте с 20.04.2007
Offline
435
#3
vold57:
Может ли переезд с VDS на сервер решить проблему и в какой степени?

:) эм.. ИМХО не лучший вариант..

vold57:
так как отключение Ditto не привело к убыстрению загрузки, а значит есть причины посущественней.

Я про размер файлов в cache каталоге не зря упомянул.. Сколько максимальный весит?

Дело не столько в самом Ditto, сколько в особенностях хранения документов (те, которые document) в MODx. После переноса информации в другую таблицу, для работы с ней Ditto не подойдёт - поэтому речь про "свои" сниппеты.

S
На сайте с 18.06.2011
Offline
24
#4

1. Для начала могу посоветовать озаботиться проблемой кэширования результатов вызова в принципе, т.к. ТС не уточнил это в своих сообщениях. Есть стандартный механизм кэширования в MODx и он работает, можно для начала использовать его.

2. Если это не помогает - уточнить, по какой причине контент генерируется динамически, как Ditto производит выборку (можете привести пример вызова, можно в ЛС). На этом этапе можно облегчить ему работу, перебор документов не должен занимать столько времени - у вас не такая большая БД для выборки.

3. Далее можно обратиться к готовым решениям для кэширования (есть уже давно написанные дополнения, позволяющие кэшировать практически любые вызовы).

4. Только после всего этого можно думать о написании собственного кода для вывода контента.

Если всё вышеперечисленное не помогает - у вас более-менее серьёзный, проект, и если вы хотите его развивать, в конечном итоге у вас получится монстр с ядром от MODx а остальной код будет написан самостоятельно - на рефакторинг вы потратите слишком много времени при расширении и лучше писать всё решение с нуля.

Могу рассказать что знаю и ответить на какие-то вопросы в ЛС.

vold57
На сайте с 01.10.2007
Offline
261
#5
ivan-lev:
Я про размер файлов в cache каталоге не зря упомянул.. Сколько максимальный весит?

Максимальный размер файла - 2,97 Мб. (siteCache.idx.php)

ivan-lev:
Дело не столько в самом Ditto, сколько в особенностях хранения документов (те, которые document) в MODx. После переноса информации в другую таблицу, для работы с ней Ditto не подойдёт - поэтому речь про "свои" сниппеты.

Я не привязываюсь к Ditto и не против "своих" сниппет, но к сожалению сам это не могу реализовать.

---------- Добавлено 29.01.2013 в 19:47 ----------

SEOTema:
1. Для начала могу посоветовать озаботиться проблемой кэширования результатов вызова в принципе, т.к. ТС не уточнил это в своих сообщениях. Есть стандартный механизм кэширования в MODx и он работает, можно для начала использовать его.
2. Если это не помогает - уточнить, по какой причине контент генерируется динамически, как Ditto производит выборку (можете привести пример вызова, можно в ЛС). На этом этапе можно облегчить ему работу, перебор документов не должен занимать столько времени - у вас не такая большая БД для выборки.
3. Далее можно обратиться к готовым решениям для кэширования (есть уже давно написанные дополнения, позволяющие кэшировать практически любые вызовы).
4. Только после всего этого можно думать о написании собственного кода для вывода контента.

Если всё вышеперечисленное не помогает - у вас более-менее серьёзный, проект, и если вы хотите его развивать, в конечном итоге у вас получится монстр с ядром от MODx а остальной код будет написан самостоятельно - на рефакторинг вы потратите слишком много времени при расширении и лучше писать всё решение с нуля.
Могу рассказать что знаю и ответить на какие-то вопросы в ЛС.

1. Я не совсем понимаю, чем кеширование может мне помочь, если на страницу будут заходить к примеру 1 раз в сутки. Первый раз все равно ведь страница будет грузится долго? Или я не правильно понимаю роль кеширования?

2. Проблема не в Ditto. Возможно он и тормозит, но в данном случае есть более весомые причины для тормозов. Я написал выше, что Ditto отключил. При этом загрузка, визуально не стала быстрее.

3. ...

4. Мне кажется, если организация БД не может обеспечить нормальную загрузку страниц, то в любом случае нужно менять структуру БД, независимо от того, использовать ли после этого кеширование и переезжать ли на выделенный сервер.

S
На сайте с 18.06.2011
Offline
24
#6
vold57:

<..>
2. Проблема не в Ditto. Возможно он и тормозит, но в данном случае есть более весомые причины для тормозов. Я написал выше, что Ditto отключил. При этом загрузка, визуально не стала быстрее.
<..>

Извиняюсь, пропустил этот момент в стартпосте.

Можете показать URL в ЛС?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий