Разделы

Скорость работы Ditto

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

Использование &depth



Этот параметр определяет уровень максимальной вложенности ресурсов для обработки. Ditto, в отличии от Wayfinder, не использует метод АПИ getChildIDs(), а имеет собственную функцию, которая работает немного эффективнее. Более того, параметр &depth по умолчанию настроен на обработку одного уровеня. Но Ditto часто используется для вывода различных каталогов, списков статей, новостей и т.д., что порой требует обработки большого количества ресурсов и вложенностей. Чем меньше уровней вложенности используется, тем лучше.

Количество используемых ресурсов



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

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

Использование фильтров



Фильтры – одна из наиболее востребованных возможностей Ditto, которая позволяет организовать вывод ресурсов удовлетворяющих заданным условиям. Но эта возможность реализована с помощью PHP. После того как все данные загружены происходит их фильтрация. Еще раз стоит отметить, что через эту обработку проходят все имеющиеся в распоряжении ресурсы. Таким образом, фильтрация может значительно влиять на производительность.

Сортировка по параметрам



Сортировка по таким стандартным полям как «pub_date», «unpub_date», «editedon», «deletedon», «publishedon» производится во время запроса в базу. Если же вы хотите использовать сортировку по TV-параметрам, то вы вновь столкнетесь с тем, что обработка происходит прямо в PHP.

Использование плейсхолдера [+author+]



Плейсхолдер [+author+] позволяет Ditto вывести имя автора для ресурса. Мы используем эту возможность в блоге или списке статей. Изначально Ditto составляет список плейсхолдеров, которые имеются в шаблоне и для указания автора происходит отдельная обработка. Для получения информации в базу делается один дополнительный запрос на каждый ресурс.

Выводы



Ditto не рассчитан на работу с большим количеством ресурсов. Это замечательный и гибкий инструмент, но многие его возможности работают не оптимально. Сочетание таких факторов, как большое количество ресурсов, постраничная разбивка, указание автора и фильтрация, могут создать серьезную нагрузку на сайт.
  • 0
  • 19 августа 2010, 22:56
  • Carw

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.