ПредишенСледващото

Днес, аз се оптимизира работата на един сайт и искате да дам няколко съвета, които могат да бъдат полезни за начинаещите програмисти, особено тези, които са в по-голяма степен се развива в MODx тагове.

Между другото, аз се отбележи веднага, че този сайт визитка, както и всички страници са кеширани с изключение на отделни единици.

Така че, основният недостатък, че се срещнах. В повечето шаблони страница съдържание продукция през парчето на потребителите, където маркера вече е регистрирано [[* съдържание]]. Ето пълен списък на това парче:

Тук ви предлагам обърне внимание на вида на строителството [[* родител: е = `240`: тогава =` ... Какъв е проблемът тук? Проблемът е, че MODx-анализатора не работи, тъй като, например, PHP-преводач. Логично е, трябва да има следната: ако идентификаторът на родителя на текущия документ е 240, тогава тогава блок. Да, според логиката, но на практика не. Аз ще покажа един прост пример за това как условията се обработват на PHP, за да покаже какво се случва. Ето един прост код:

Така че, в този пример, ако родителят не е равно на 240, функцията за времето () няма да бъде изпълнен по принцип. MODx анализирането съдържанието на блока ще се изпълнява във всеки случай, в резултат просто ще се появи на страницата, или не, ще се определят условията на валидност.

В този случай, независимо от условията на MODx-анализатора изпълнени напълно блокира Тогава и само тогава да вземе решение въз основа на условия за извеждане на резултат от блока или не. Това означава, че независимо от това кой родител в документа, всички блокове в парчето ще бъдат изпълнени. И все пак тези блокове са четири, две от тях - NEkeshiruemy фрагмент getPage. Това означава, че дори ако страницата вече е кеширана, всеки път, когато го отворите, MODx ще се справят с тези откъси, защото те nekeshiruemye. В резултат на това: 5-10 секунди, за да генерират кеширан кода срещу втори с ревизирана логика.

Тук ние трябва да как правилно да предписват такива неща. Моят съвет е да се използват по-малки парчета, по-дълги откъси. Въпреки факта, че парчета психологически възприема по-прости елементи (тъй като те харесва като HTML, PHP, а не изпълним), но използването им налага допълнителни разходи под формата на допълнително натоварване на анализатора. Плюс това, както писах тук. в парчета да управлявате кеш елементи само на нивото на текущия документ, а не на нивото на целия сайт. Така че се опитват да следват правилото: всеки логика във фрагментите, регистрация в парчета.

Както би било по-правилно да прилага логиката? 1. Създаване на парче, което ще има шаблон за изхода на фрагмента.

Забележка: има два контейнер: pre_content и POST_CONTENT. Когато създадете парче, ако не сте сигурни, че всички контейнери ще бъдат прехвърлени към променливите, за всеки случай, се създава празен настройки за това парче. В нашия случай това pre_content параметри и POST_CONTENT. Аз не знам как pofiksili сега, но преди анализатор до 10 пъти се опитват да "намери" променлива, дъвчейки парче.

2. Създайте фрагмент.

В този фрагмент, не сме регистрирани допълнителен кеш, но за нас най-важното в момента е, че блоковете в рамките на условията, ще бъдат изпълнени само тогава, когато условието е изпълнено. Поради тази причина, ние практикуваме много намалено време за генериране на страницата. В резултат на това, кодът не стане объркване, но производителността нарасна силно.

И последното парче от съвет: да не се съхранява много код в шаблони. Много страници сайтове имат една и съща горния и долния колонтитул на целия сайт (обикновено само основните може да се различава значително). Така се създаде обща парче горния и долния, и да ги заредите във всеки шаблон, който не е необходимо след това всичко се променя, ако има такъв блок, който искате да промените. И си представете колко движение трябва да се направи, за да се промени дизайна и логиката на уебсайта, на който 15-те парчета, като тези шаблони:

Това е, вие знаете какво имам предвид?

Мисля, че отговорът е да, разбирам. 99% баланс на това: (!? Говоря за [[If), без значение какво ви състояние на ниво шаблон, парчета [[$ fullTemplate]] и [[$ mobileTemplate]] ще бъдат изпълнени във всички случаи. Той разполага MODx-анализатора. Това не е чист PHP, където, ако условието, ако () не е изпълнено, и вътре в нея няма нищо, за да бъде изпълнена. И тук, ако - това не е дори да функционира като маркер (ако говорим за стандартизация). В резултат на това той или дисплеи, или показва резултата. Но резултатът във всеки случай, след това ще има вътрешни тагове, за да работят.

Това е една от най-сериозните от причините, поради които използваме modxSmarty, не MODx-роден и стандартизация. тя е на нивото на Smarty по този начин:

Тук ясно е един или изпълнени, или и двете.

Ако искате да направите чиста MODx-е, тогава не се обадите на фрагмент Ако е необходимо, и напишете фрагмент, което е ясно, при условие ще доведе до специално парче. върне $ modx-> getChunk ($ chunkName);

Свързани статии

Подкрепете проекта - споделете линка, благодаря!