Представляю вашему вниманию фрагмент каталогПросмотр .
Создан для новой версии Shopkeeper - 1.0 (для MODx Evolution), но теперь его можно использовать вместо него.
то же самое .
Я провел короткий тест производительности для обоих фрагментов.
У нас есть 200 документов.
Фрагменты не могут быть кэшированы, потому что.
требуется навигация по страницам.
Были взяты примерно средние значения после нескольких обновлений страницы.
Фрагмент вызова: [!catalogView?
&dataType=`documents`
&tpl=`@FILE:assets/snippets/catalogView/chunks/catalogRow_chunk.tpl`
&parents=`87`
&paginate=`1`
&display=`10`
&sortBy=`pagetitle`
&sortDir=`asc`!]
[!Ditto?
&tpl=`@FILE:assets/snippets/catalogView/chunks/catalogRow_chunk.tpl`
&parents=`87`
&paginate=`1`
&display=`10`
&sortBy=`pagetitle`
&sortDir=`asc`!]
10 документов на странице
каталогПросмотрMySQL: 0,0722 с, 6 запросов, PHP: 0,2756 с, всего: 0,3479 с, документ получен из кэшато же самое
MySQL: 0,1907 с, 32 запроса(ов), PHP: 0,4672 с, всего: 0,6579 с, документ получен из кэша
20 документов на странице
каталогПросмотретьMySQL: 0,0735 с, 6 запросов, PHP: 0,2934 с, всего: 0,3669 с, документ получен из кэшато же самое
MySQL: 0,2601 с, 52 запроса(ов), PHP: 0,5081 с, всего: 0,7683 с, документ получен из кэшаКак видите, Ditto выполняет 2 запроса MySQL для каждого документа на странице.
Чанк CatalogRow_chunk.tpl содержит один нестандартный модификатор PHx, который используется для изменения формата номера цены: [+цена:num_format+] .
Если его удалить, значения будут такие (20 документов): каталогПросмотр
MySQL: 0,0754 с, 5 запросов, PHP: 0,2794 с, всего: 0,3548 с, документ получен из кэшато же самое
MySQL: 0,2218 с, 32 запроса(ов), PHP: 0,5411 с, всего: 0,7629 с, документ получен из кэшаКак ни странно, Дитто стал делать значительно меньше запросов.
Теперь для каждого документа существует один запрос.
CatalogView — на один распространённый запрос меньше.
Я не знаю, что это за запрос и почему он делается.
ПХx , потому что код модификатора находится в файле, а не в базе данных, но это не имеет значения.
Мне было интересно, почему для каждого модификатора PHx (нестандартного) при использовании Ditto делается один запрос в базу данных, ведь PHx кэширует такие модификаторы.
Все оказалось просто.
То же самое (2.1.0) не дает PHx возможности кэшировать модификаторы, поскольку при «рендеринге» каждого документа он создает новый объект класса PHx (функция $ditto-> рендер() ).
Ну и кроме этого, если не использовать модификаторы PHx из файлов, один запрос для каждого документа — это слишком много.
каталогПросмотр еще не очень хорошо протестирован, возможны ошибки.
Пожалуйста, сообщайте о любых найденных ошибках.
Скачать каталогView 1.0 RC1 P.S. Конечно, пора задуматься о MODx Revo, но я решил «добить» Shopkeeper для MODx Evo, выпустив версию 1.0 (сейчас бета).
Теги: #эволюция modx #shopkeeper #ditto #ModX
-
Веб-Разработчик: 10 Полезных Инструментов
19 Oct, 24 -
Рбк Запустил Три Новые Соцсети
19 Oct, 24 -
+1 К Результатам Поиска
19 Oct, 24 -
Страницы «Встреча Qiwi Scaladrom»
19 Oct, 24 -
Зачем Закрывать Индексацию Контент-Проекта?
19 Oct, 24 -
Есть Ли Альтернатива Поисковым Системам?
19 Oct, 24