newbmod

newbmod

С нами с 23 сентября 2019; Место в рейтинге пользователей: #10236
newbmod
28 сентября 2021, 09:57
0
Код оптимизировал. Однако время осталось все же очень большим. Для эксперимента сделал практически пустую страницу с pdoMenu и результатами порядка 200 элементов
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    [[pdoMenu? &parents=`0` &scheme=`full` &level=`3` &where=`{"template:!=":3}`]]

<b>[^qt^]</b> - Query Time - Shows how long MODx took talking to the database <br />
<b>[^q^]</b> - Query Count -Shows how many database queries MODX made  <br />
<b>[^p^]</b> - Parse Time - Shows how long MODX took to parse the page  <br />
<b>[^t^]</b> - Total Time - Shows the total time taken to parse/ render the page <br /> 
<b>[^s^]</b> - Source - Shows the source of page, whether is database or cache. <br />

</body>
</html>
Результат:
0.0053 s - Query Time - Shows how long MODx took talking to the database
3 - Query Count -Shows how many database queries MODX made
0.2581 s - Parse Time - Shows how long MODX took to parse the page
0.2634 s - Total Time - Shows the total time taken to parse/ render the page
cache - Source - Shows the source of page, whether is database or cache.
Поставил debugParser и вот картина:
#	Tag	Queries	Queries time, s	Parse Time, s
1	[[pdoMenu? &parents=`0` &scheme=`full` &level=`3` &where=`{"template:!=":3}`]]	12	0.0100107	0.4148281
Total parse time	0.7210090 s
Total queries	20
Total queries time	0.0185585 s
Memory peak usage	12 Mb
MODX version	MODX Revolution 2.7.3-pl (advanced)
PHP version	5.6.40
Database version	mysql 10.2.39-MariaDB
From cache	false
Дело явно не в msProduct.
0,7 c на выборку 200 элементов — это перебор
newbmod
24 сентября 2021, 18:08
0
Спасибо! Попробую оптимизировать код чанка и снова замерю скорость
newbmod
24 сентября 2021, 17:21
0
Спасибо что откликнулись и так быстро!
Код чанка следующий:

<div class="col-xs-6 col-lg-3 ms2_product" style="padding: 0 !important">
    <div class="element relative">
        <form method="post" class="ms2_form">
            <div class="element-buttons">
                <div class="table">
                    <div class="table-cell text-center">
                        [[+template:is=`3`:then=`
                        <div>
                            <button class="to-cart-yellow" type="submit" name="ms2_action" value="cart/add"><i class="material-icons">shopping_cart</i> В корзину</button>
                            <input type="hidden" name="id" value="{$id}">
                            <input type="hidden" name="options" value="[]">
                            <input type="hidden" name="count" id="count-{$id}" value="1">
                        </div>
                        `:else=``]]
                        <div class="push15"></div>
                        <div>
                            <a href="{$_modx->makeUrl($id)}" class="to-cart-white"><i class="material-icons">navigate_next</i>Подробнее</a>
                        </div>
                    </div>
                </div>
            </div>
            <div class="inner">
                <div class="img-wrapper">
                    <div class="table">
                        <div class="table-cell text-center">
                        [[+class_key:is=`msCategory`:then=`
                            [[+tv.imgTV:is=``:then=`<img src="[[+tv.img:default=`[[!msGallery?tpl=`msGalleryCategory`&product=`[[+id]]`&limit=`1`]]`:phpthumbon=`w=200&f=webp&q=65`]]" data-img="[[+tv.img:default=`[[!msGallery?tpl=`msGalleryCategory`&product=`[[+id]]`&limit=`1`]]`:phpthumbon=`w=200&f=webp&q=65`]]" class="zerone lazy" alt="{$pagetitle}" />`:else=`<img src="[[+tv.imgTV]]" data-img="[[+tv.imgTV]]" class="zerone lazy" alt="{$pagetitle}" />`]]
                        `:else=``]]
                        [[+template:is=`3`:then=`
                            [[+imgTV:is=``:then=`<img src="[[+img:default=`[[!msGallery?tpl=`msGalleryCategory`&product=`[[+id]]`&limit=`1`]]`:phpthumbon=`w=200&f=webp&q=65`]]" data-img="[[+img:default=`[[!msGallery?tpl=`msGalleryCategory`&product=`[[+id]]`&limit=`1`]]`:phpthumbon=`w=200&f=webp&q=65`]]" class="zerone lazy x" alt="{$pagetitle}" />`:else=`<img src="[[+imgTV]]" data-img="[[+imgTV]]" class="zerone lazy y" alt="{$pagetitle}" />`]]
                        `:else=``]]
                        </div>
                    </div>
                </div>
                <div class="category"><span>[[pdoField?&id=`[[+id]]`&topLevel=`2`]]</span></div>
                
                
                <div class="title">
                    <div class="table">
                        <div class="table-cell">
                            <h6>{$pagetitle}</h6>
                        </div>
                    </div>
                </div>
                
                [[+class_key:is=`msCategory`:then=``:else=`
                <div class="catalog-flags">
                    [[+new:is=`1`:then=`
                    <p><i class="material-icons">star</i> [[%ms2_frontend_new]] <i class="material-icons">star</i></p>
                    `:else=``]]
                    [[+popular:is=`1`:then=`
                    <p><i class="material-icons">star</i> [[%ms2_frontend_popular]] <i class="material-icons">star</i></p>
                    `:else=``]]
                    [[+favorite:is=`1`:then=`
                    <p><i class="material-icons">star</i> [[%ms2_frontend_favorite]] <i class="material-icons">star</i></p>
                    `:else=``]]
                </div>
                `]]
                
                [[+template:is=`3`:then=`
                <div class="element-price-wrap">
                    {if $old_price?}
                    <span class="old-price strike f12 red">{$old_price} {'ms2_frontend_currency' | lexicon}</span> 
                    {/if}
                    
                    <span class="price">[[+price]]</span> <span>{'ms2_frontend_currency' | lexicon}</span> 
                    <!-- [[pdoField? &id=`[[+id]]` &field=`pricetv`]] -->
                    
                </div>
                `:else=``]]
            </div>
        </form>
    </div>
</div>
newbmod
28 ноября 2020, 14:30
0
Спасибо за ответ!
Но если вешать на событие onDocFormSave, то данное поле будет переписываться всегда при сохранении товара на дефолтное значение (5), даже если менеджер его изменит на отличное от дефолтного.
newbmod
02 декабря 2019, 15:16
0
Есть ресурсы с описанием квартир. У каждого ресурса есть набор картинок по комнатам в виде TV image полей (одно поле — одна картинка). Нужно Вывести все ресурсы с картинками по отдельным помещениям, т.е. все кухни, все прихожие, все спальни и т.д. и все это на одной странице. Стоит js фильтр, который отображает либо их все скопом, либо по одному выбранному типу помещения (связан он с class элемента). Сейчас реализовано несколькими выводами pdoResources. Но это много лишнего кода, как я думаю. Можно ли как-то реализовать это через цикл, но в tpl вывода включать название TV поля к примеру?