Архив - только для чтения |
Сообщество uCoz » Архивариус » Архив » условные операторы и системные коды (архив 27.02.2011) |
условные операторы и системные коды |
Здравствуйте!
Насколько я понимаю условные операторы исполняются на стороне сервера. Вопрос: Насколько их использование грузит сервер и замедляет открытие страницы? Например, я планирую использовать на сайте, в шаблонах: Насколько такое решение критично или сложно для исполнения? |
Андрей_ЗМТ
Если условия простые типа сравнения чисел или поиск в строке небольшого размера, то такие условия обрабатываются быстро и сильно не загружают сервер. Как и не сильно влияют на время формирования исходного кода страницы, которая и будет отправлена в браузер. Другое дело, если в условиях сплошь и рядом сложные конструкции поиска и вырезки из длинных кусков текста - тут даже проблема не в самом поиске нужного фрагмента в исходной строке (тем более, что на Юкозе используется искуственное ограничение максимальной длины поиска в строках), а в алгоритме получения этой строки! К примеру, условие <?if($USER$='Alex')?> и условие <?if(strpos($MYINF_1$,'Alex') = -1)?> Если $MYINF_1$ - это какой-либо информер, то сервер сначала выполнит кучу работы (сложность и продолжительность зависит от типа информера) по формированию информера и только после этого потратит всего лишь несколько миллисекунд на поиск запрошенной подстроки в сформированном коде! Поэтому, еще раз - все зависит от самих условий - иногда одно условие так "нагрузит" сервер и задержит отправку готовой страницы, что хватит на несколько сотен простых условий! |
sch779, спасибо за четкие разяснения. Я примерно так себе и представлял, но очень туманно. :-)
Условия у меня простые - в зависимости от того какой раздел или страница - показывать тот или иной HTML код. Сообщение отредактировал Андрей_ЗМТ - Понедельник, 27 Дек 2010, 02:13:54
|
Quote (Андрей_ЗМТ) показывать тот или иной HTML код. Ну, тогда "тормозов" не должно быть - при формировании готового кода страницы она так или иначе составляется на сервере из различных блоков - и Ваши дополнительные условия не сильно затормозят этот процесс, а иногда даже ускорят его (если в результате срабатывания условия не будет генериться большой блок, особенно если его генерация связана с большой выборкой из базы данных Вашего сайта)! |
Quote (Андрей_ЗМТ) sch779, спасибо за четкие разяснения. Я примерно так себе и представлял, но очень туманно. :-) Я сам хотел ответить Вам на этот вопрос, но потом передумал. Лучше дождитесь все-таки более компетентных людей, которые смогут дать ответ по части нагрузки сервера. Кстати говоря, в исходном коде внизу пишеться время формирования страницы - ориентируйтесь по нему. Если будет доходить до секунды - значит уже перебор. Любые работы по:
- Javascript, jQuery, HTML, CSS - Верстке макетов и установке их на сайты - Нестандартным решениям |
Quote (sch779) К примеру, условие <?if($USER$='Alex')?> и условие <?if(strpos($MYINF_1$,'Alex') = -1)?> Если $MYINF_1$ - это какой-либо информер, то сервер сначала выполнит кучу работы (сложность и продолжительность зависит от типа информера) по формированию информера и только после этого потратит всего лишь несколько миллисекунд на поиск запрошенной подстроки в сформированном коде! Вообще-то это не так. Все информеры формируются не в момент генерации страницы, а заранее, отдельным периодическим процессом. А в момент генерации страницы они уже просто подставляются в шаблон как самая обычная строка. Так что в этом плане никакой разницы между поиском подстроки в информере и просто в какой-то длинной строке (скажем, в коде $FILTER1_MENU$) не будет. Потеряшка - поиск потерянных и помощь бездомным животным в Питере
|
Quote (YuriT) Вообще-то это не так Согласен - информеры не совсем удачный пример в данном случае! Но основной смыл, думаю, понятен. Кстати - как в шаблонах можно получить точное текущее время ДО СЕКУНДЫ? Или, лучше, таймштамп? |
Подскажите, как прописать условие с $FILTER1$
У фильтра всего 2 значения. Нужна цепочка: Если 1-е значение, то .... иначе ... конец. Собственно вопрос как задаётся переменная для фильтра? Также интересует вопрос с переменной $DATE$. Можно ли создавать условие типа, если месяц "январь-март", то... иначе ...конец. ? Проверенный на все 100
Сообщение отредактировал Продвинутый - Вторник, 04 Янв 2011, 14:30:17
|
Quote (Продвинутый) Собственно вопрос как задаётся переменная для фильтра? Смотря в каком шаблоне. Если на странице "материал и комментарии" - то там все просто, поскольку есть $FILTER1_VALUE$ . А если на страницах со списками материалов - то там все гораздо хуже. Там $FILTER1_VALUE$, к сожалению, уже нет, и текущее значение фильтра можно узнать, например, при помощи оператора STRPOS() по вхождению характерных подстрок с куском selected в переменную $FILTER1_MENU$, и для двух значений это вполне работает. А вот если значений фильтра сильно больше, то начинаются проблемы из-за того, что оператор STRPOS() анализирует только первые 1000 символов строки, а код $FILTER1_MENU$ получается длиннее.
Quote (Продвинутый) Также интересует вопрос с переменной $DATE$. Можно ли создавать условие типа, если месяц "январь-март", то... иначе ...конец. ? Опять же, смотря о каком шаблоне идет речь. Если о шаблоне страниц - то там для этого проще использовать переменную $MONTH$, с ней условие 'если месяц "январь-март"' будет просто <?if($MONTH$<4)?> Потеряшка - поиск потерянных и помощь бездомным животным в Питере
|
YuriT, речь идет об информере вывода фотографий по рейтингу для галереи.
$FILTER1$ принимает два значения "Город Юбилейный" и "Город Королёв" Не подскажете, как будет выглядеть код?
Quote (YuriT) то там для этого проще использовать переменную $MONTH$ в шаблоне информера есть только переменная $DATE$
Quote (uCoz-XPert) Например, условие: если день равен 29 будет выглядеть так: <?if(substr($DATE$,0,2)='29')?>...<?enidf?> Интересует именно задание интервала дат, а точнее месяцев. Я так понимаю, это реально толко с кодом $MONTH$, которого в шалоне информера галереи нету... Проверенный на все 100
|
Продвинутый, в информерах эти коды выводят то же самое, что и коды $FILTER1_VALUE$ в "виде материалов", т.е. текст значения фильтра для данного материала.
Насчет месяца - условие можно написать точно так же, только вырезав сначала из даты нужный кусок: <?if(substr($DATE,3,2)?>... (это для случая, если формат дат в Общих настройках установлен на DD.MM.YYYYY) Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Среда, 05 Янв 2011, 02:56:09
|
появился сегодня один тугой вопрос с самым простым оператором, самое главное что он не заработал, вот он
<?if($USER$='$USERNAME$')?>Моя фотография<?else?>Фотография пользователя $USER$<?endif?> почему правильно не работает? всегда выводит только Фотография пользователя $USER$ |
| |||