Тормоза msProducts при условии &sortby=`RAND()`
Добрый день.
Есть сайт modxtestsite.cx.ua с залитыми ~4000 единиц товаров. Из них опубликовано ~ 2000. На каждый товар по 4-5 TV.
На главной странице делаю выборку
Пробую убрать условие &sortby=`RAND()`, скорость загрузки сразу увеличивается и PageSpeed Insights выдаёт показатель порядка 75-80. Но RAND() мне нужен на странице по задумке.
Как можно ускорить/оптимизировать?
PS showLog выдаёт следующее:
Есть сайт modxtestsite.cx.ua с залитыми ~4000 единиц товаров. Из них опубликовано ~ 2000. На каждый товар по 4-5 TV.
На главной странице делаю выборку
[[!msProducts?
&parents=`10000`
&limit=`6`
&tpl=`productsTab_msTpl`
&sortby=`RAND()`
]]
Страница жутко долго загружается. Сервис PageSpeed Insights даже выдаёт ошибку: «Lighthouse returned error: FAILED_DOCUMENT_REQUEST. Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests. net::ERR_TIMED_OUT.»Пробую убрать условие &sortby=`RAND()`, скорость загрузки сразу увеличивается и PageSpeed Insights выдаёт показатель порядка 75-80. Но RAND() мне нужен на странице по задумке.
Как можно ускорить/оптимизировать?
PS showLog выдаёт следующее:
0.0001841: pdoTools loaded.
0.0034468: Conditions prepared
0.0001030: xPDO query object created
0.0003190: leftJoined msProductData as Data
0.0002050: leftJoined msVendor as Vendor
0.0000112: Grouped by msProduct.id
0.0001659: Added selection of msProduct: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `alias_visible`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0001111: Added selection of msProductData: `article`, `price`, `old_price`, `weight`, `image`, `thumb`, `vendor`, `made_in`, `new`, `popular`, `favorite`, `tags`, `color`, `size`, `source`
0.0001440: Added selection of msVendor: `name` AS `vendor.name`, `resource` AS `vendor.resource`, `country` AS `vendor.country`, `logo` AS `vendor.logo`, `address` AS `vendor.address`, `phone` AS `vendor.phone`, `fax` AS `vendor.fax`, `email` AS `vendor.email`, `description` AS `vendor.description`, `properties` AS `vendor.properties`
0.0097561: Processed additional conditions
0.0110300: Added where condition: class_key=msProduct, msProduct.parent:IN(10000,1,246,310,425,568,696,1471,3187,2,25,40,212,5,6,8,9,10,13,14,15,16,17,18,19,20,21,22,23,24,2026,2329,2447,2461,2634,2677,2743,2832,2833,2834,2835,2858,2859,2941,2942,2965,2966,3010,3183,3184,3316,3317,3418,3480,3484,3547,3754,3755,3765,3969,3973,3974,3975,3976,3977,3978,4041,4060,4061,4062,4141,4157,4160,26,27,28,29,30,31,32,...............Здесь идут айди всех товаров ............ 4226), msProduct.published=1, msProduct.deleted=0
0.0001130: Sorted by RAND(), ASC
0.0000081: Limited to 6, offset 0
0.0007951: SQL prepared "SELECT `msProduct`.`id`, `msProduct`.`type`, `msProduct`.`contentType`, `msProduct`.`pagetitle`, `msProduct`.`longtitle`, `msProduct`.`description`, `msProduct`.`alias`, `msProduct`.`alias_visible`, `msProduct`.`link_attributes`, `msProduct`.`published`, `msProduct`.`pub_date`, `msProduct`.`unpub_date`, `msProduct`.`parent`, `msProduct`.`isfolder`, `msProduct`.`introtext`, `msProduct`.`richtext`, `msProduct`.`template`, `msProduct`.`menuindex`, `msProduct`.`searchable`, `msProduct`.`cacheable`, `msProduct`.`createdby`, `msProduct`.`createdon`, `msProduct`.`editedby`, `msProduct`.`editedon`, `msProduct`.`deleted`, `msProduct`.`deletedon`, `msProduct`.`deletedby`, `msProduct`.`publishedon`, `msProduct`.`publishedby`, `msProduct`.`menutitle`, `msProduct`.`donthit`, `msProduct`.`privateweb`, `msProduct`.`privatemgr`, `msProduct`.`content_dispo`, `msProduct`.`hidemenu`, `msProduct`.`class_key`, `msProduct`.`context_key`, `msProduct`.`content_type`, `msProduct`.`uri`, `msProduct`.`uri_override`, `msProduct`.`hide_children_in_tree`, `msProduct`.`show_in_tree`, `msProduct`.`properties`, `Data`.`article`, `Data`.`price`, `Data`.`old_price`, `Data`.`weight`, `Data`.`image`, `Data`.`thumb`, `Data`.`vendor`, `Data`.`made_in`, `Data`.`new`, `Data`.`popular`, `Data`.`favorite`, `Data`.`tags`, `Data`.`color`, `Data`.`size`, `Data`.`source`, `Vendor`.`name` AS `vendor.name`, `Vendor`.`resource` AS `vendor.resource`, `Vendor`.`country` AS `vendor.country`, `Vendor`.`logo` AS `vendor.logo`, `Vendor`.`address` AS `vendor.address`, `Vendor`.`phone` AS `vendor.phone`, `Vendor`.`fax` AS `vendor.fax`, `Vendor`.`email` AS `vendor.email`, `Vendor`.`description` AS `vendor.description`, `Vendor`.`properties` AS `vendor.properties` FROM `site_content` AS `msProduct` LEFT JOIN `ms2_products` `Data` ON `msProduct`.`id` = `Data`.`id` LEFT JOIN `ms2_vendors` `Vendor` ON Data.vendor=Vendor.id WHERE ( `msProduct`.`class_key` = 'msProduct' AND `msProduct`.`parent` IN (10000,1,246,310,425,568,696, ...............Здесь идут айди всех товаров ............ 4226) AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 ) GROUP BY msProduct.id ORDER BY RAND() ASC LIMIT 6 "
0.1560180: SQL executed
0.0001209: Rows fetched
0.0001349: Returning raw data
0.0015600: Checked the active modifiers
0.0070782: Loaded "modChunk" with name "productsTab_msTpl"
0.0722980: Compiled Fenom chunk with name "modchunk/31"
0.0018709: Loaded "modSnippet" with name "phpthumbof"
0.0028250: Loaded "modSnippet" with name "priceFormatter"
0.0128639: Time to load products options
15.8525579: Total time
35 651 584: Memory usage
Комментарии: 8
Наверное стоит попробовать побороть наличие parent:IN в получаемом запросе…
А смысл?
Запросы выполняется за 0.15 сек, вместе с условиями и случайной сортировкой. Итог же — 15 секунд, значит проблема не в запросе.
Учитывая наличие phpthumbof в логе, предположу, что при появлении новых случайных записей в выводе, для них генерируются превьюшки и тормоза именно отсюда.
0.1560180: SQL executed
Запросы выполняется за 0.15 сек, вместе с условиями и случайной сортировкой. Итог же — 15 секунд, значит проблема не в запросе.
Учитывая наличие phpthumbof в логе, предположу, что при появлении новых случайных записей в выводе, для них генерируются превьюшки и тормоза именно отсюда.
Да, если убрать phpthumbof, скорость загрузки значительно увеличивается — 0,21 сек против 15. Спасибо.
Но теперь встаёт вопрос, как можно это обойти, если phpthumbof нужен (в частности для наложения WM)?
Но теперь встаёт вопрос, как можно это обойти, если phpthumbof нужен (в частности для наложения WM)?
Да и просто оставить phpthumbof для ресайза (без WM) тоже не сильно исправляет ситуацию. Скорость загрузки показывает 3 секунды.
Почитай про возможности встроенной галереи miniShop2
Вы про настройку параметров источника файлов MS2 Images? В ту сторону копать? И если да, то водяные знаки можно так же через fltr задать?
Не создаю новую тему, т.к. она связана с этой, но тут возник один вопрос. С целью ускорения загрузки страницы я воспользовался Вашим советом и ушёл от phpthumbof. В настройках параметров источника файлов MS2 Images я прописал вот такой набор параметров генерации превьюшек:
В вызове сниппета msProducts я добавляю &includeThumbs=`thumb,thumb_hover`. В чанке вызываю [[+thumb]] и [[+thumb_hover]]. Но выводится только изображение [[+thumb]], а [[+thumb_hover]] пусто. ЧЯДНТ?
{"thumb":{"w":173,"h":173,"q":100,"zc":"1","bg":"000000"},"thumb_hover":{"w":173,"h":173,"q":100,"zc":"1","bg":"000000","fltr":"wmi|/assets/images/products/wm.jpg|C|80"}}
Залил изображения товаров. В каталогах для каждого товара создались папки «thumb» и «thumb_hover», в которых лежат созданные превьюшки. Тут всё ОК.В вызове сниппета msProducts я добавляю &includeThumbs=`thumb,thumb_hover`. В чанке вызываю [[+thumb]] и [[+thumb_hover]]. Но выводится только изображение [[+thumb]], а [[+thumb_hover]] пусто. ЧЯДНТ?
Странно, но fenom заработал: {$thumb_hover}.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.