Разработчици на 1C-Bitrix - Оптимизиране на времето за генериране на страници
Последна дата на влизане: | преди 3 дни |
град: | Калининград |
Име на компанията: | Битрикс |
Често има въпроси относно изпълнението на проекти, базирани на "1C-Bitrix", за решаването на които не е необходимо да се прибягва до "екстремни методи". За да помогнем при решаването на подобни проблеми, особено за разработчици, които току-що започват да работят с 1C-Bitrix, нека разгледаме пример за оптимизиране на „определена“ страница от информационен сайт. За целта ще използваме само инструментите, вградени в продукта.
И така, какво имаме:
- VMBitrix (512M памет)
- новинарски инфоблок
Начален час на страницата: топ php новини: 0.0285s. - sql: 0.0085s. php новини: 6.144s. - sql: 6.0927s.
Ние гледаме коя заявка генерира основното натоварване, копираме я в SQL конзолата, като изпълним EXPLAIN.Виждаме, че има много редове, включени в селекцията от таблицата b_iblock_element. В този случай използваният индекс ix_iblock_element_code не е ефективен в този случай. След като анализирахме заявката, стигаме до извода, че основният проблем в случая се дължи на проверката на периода на активност на елементаВреме за изпълнение на страницата: топ php новини: 0.0188s. - sql: 0.0029s. php новини: 0.0475s. - sql: 0,0243s. както виждате, постигнахме добър резултат доста лесно.
Да предположим, че поради редица причини се използват инфоблокове+, как ще изглежда времето за генериране на страница? Преобразуваме информационния блок и разглеждаме времето за изпълнение:
топ новини за php: 6,9868s. - sql: 6.9709s. php новини: 0.2191s. - sql: 0.1942s.
Също такатърсим в SQL конзолата за обяснение най-тежката заявка от топ новините и виждаме подобен проблем, само че сега причината за това е липсата на индекс на свойството MAIN_NEWS. (В първите инфоблокове се изгражда индекс от числови стойности)И вижте резултата
Както можете да видите, в този случай постигнахме добро представяне.
Като резултат
Добавянето на индекси по дата на дейност към b_iblock_element трябва да се извършва внимателно. Може да има ситуация, в която този индекс не би било желателно да се използва. В този случай можете да дублирате началната и крайната дата на дейността под формата на клеймо за време като числени свойства на информационния блок и да филтрирате по тях.
Когато добавяте вашите индекси, трябва да създадете известно уникално име, така че да няма ситуация, в която името на индекса, който сте създали, и индексът, който може да бъде добавен чрез системата за актуализиране, да съвпадат.
Първите информационни блокове вече имат индекс за всички числени свойства и ID стойности на свойствата на списъка. Ако използвате infoblocks+, тогава трябва ръчно да поставите индекси на тези свойства, за които ще избирате
В бъдеще ще се опитам да засегна и други аспекти на оптимизацията.