Smarty ? :-D сори пока не вижу разницы ... я про смарти говорил просто из-за того что видел что идея идет как раз в сторону реализации смарти ...
Наваял манула, лежит на сайте, прошу заценять nimistar, если честно, то не знал, что смарти так работает. Наверное бы и не писал свой, но уже поздно, да и получился он лёгкий и простой, так что думаю кому-нибудь пригодится.
В цикле - локальные. Глобальные в цикле есть. Единственное но, имена не должны попадать друг на друга, иначе глобальные переменные не будут работать. Причем и вне цикла тоже.
Придумал решение, на досуге попробую реализовать. Сам сегодня сталкнулся: У страницы есть title и в цикле присутствует. В текущем проекте уже некогда заморачиваться, но исправить надо, верно указали, спасибо.
очень крутая тема! Спасибо. Вопрос1: насколько быстро он работает? А если отключено кеширование? Вопрос2: у меня отдельно кешируются блоки. Скажем отдельно боковые блоки, основное тело документа и комментарии ,находящиеся под основным телом. Можно ли это реализовать здесь? Если да, то прошу пример. Вопрос3: слышал, что js нужно в конце подключать, css в начале (а может наоборот). И, предположим, в зависимости от некоторых параметров, я вызываю что-то типа jQueryConnect("nyroModal"); . А вышеупомянутая ф-ция проверяет, не подключали ли мы его и в противном случае делает тупой echo "скрипт путь до него и пр.". И вот, получается, что где-то в середине страницы подключается js-файл, а строк через 15 еще один. А хочется, чтоб они все вместе были в head'е. И как это реализовать? Вопрос4: как продолжение предидущего: а еще хорошо, если б можно было css-файлы, которые подключаем объединять. Возможно? Вопрос5: а еще хочется, чтоб никогда не было ошибок, дескать header уже отправлен. Поэтому сначала генерируем страницу, отправляем куки, и только потом ее выводим пользователю. Возможно?
Кому не интересно, идут качать смарти или блитз. О, пока писал пост, куму-то проект понадобился. 2Koc 1. Кэш не отключается. Можно только принудительно его переписывать каждый раз (метод re_cache()). Вообще тестов ещё не проводил. Но при разборе каждый раз - тормоз будет точно. При рабочем кеше, думаю, что быстрее всех, разбирающих каждый раз. На счёт смарти и блитза не уверен. Но достаточно быстр, чтобы юзать в местах с большой посещаемостью. 2. Ту так нельзя. Он сначала собирает один большой шаблон, а потом его весь кеширует. Какой смысл в кешировании разных кусков? Если только сделать так: PHP: $tpl = new phparser( 'tpl' , 'cache' ); $tpl -> load( 'template_1' ); $tpl -> parse(); $tpl = new phparser( 'tpl' , 'cache' ); $tpl -> load( 'template_2' ); $tpl -> parse(); $tpl = new phparser( 'tpl' , 'cache' ); $tpl -> load( 'template_3' ); $tpl -> parse(); В принципе будет желаемый результат. 3. Чёт не совсем понял вопроса. Просто с этой либой не работаю, а юзаю только явоскриптовую часть jquery 4. Если их подключать как список стилей в страничке, то так и будет, а иначе их же браузер грузит. 5. Собственно так и происходит. PHP: $tpl = new phparser( 'tpl' , 'cache' ); echo 123; $tpl -> load( 'template' ); // тут вывод куков $tpl -> parse(); Ошибки не будет
Да, если надумаешь писать и дойдёшь до использование циклов, подожди до завтра. Я вышеупомянутый недочёт исправлю и будет ок. Версию сразу кину на сайт, тут отпишусь.
мой случай: если не кешировать страницу совсем - будет около 42 запросов. Кешируются: боковые блоки, тело, комменты. Человек написал комментарий. Что делаем? верно, очищаем кеш коммента, при следущей загрузке комменты еще разок сгенерируются и запишутся в кеш, пока кто-то не напишет новый коммент. "Накладные расходы" - 3-5 запросов. Именно столько нужно для вывода комментов. А ежели полностью страницу кешируем? Это будет опять 42 запроса? пока только присматриваюсь
Kos, у него нет кэширование вывода, только кэширование откомпилированных шаблонов. Danilka, а без кэширования вывода ни о каких высоких нагрузках говорить не приходится.. вон у драгдамора страницы из полностраничного кэша выдаются апачем без участия пхп. но там это вынужденная мера, ибо поднятие всего "фреймворка" на каждый запрос слишком накладно.
Если уж на то пошло, то можно генерить просто хтмлки и складывать их в папочку, а них уже ссылки давать. В принципе можно заморочиться и наваять отдельный класс, но это по-моему уже немного другая тема, да и оно будет сильно привязано к коду. Это уж как кто пишет... Предлогаю обсудить как это должно выглядеть. Koc, ну тебе уже тут ответили. А откудова так много запросов?
достаточно просто реализовать виртуальные инклуды с полностраничным кэшированием и будет нам счастье! ssi! ssi! - кричит толпа.
А если учитывать "шматковость" кеширования. Может сделать что-нибудь типа этого. Рассмотрим на примере вышеуказанных каментов: PHP: ... if( $tpl -> load( 'comments' ) ) { ... // тут вывод коментов из базы } ... А когда добавляем новый камент, то делаем такой вызов: PHP: $tpl -> del( 'comments' ); Тогда выходит, если кэш присутствует, то метод возвращает true и тогда коменты из базы не дёркаются. А если добавили новые, то удаляем этот кэш и при ближайшем вызове load( 'comments' ) он подгрузит шаблон, а вернёт false. И уж тогда будем выполнять запросы. Конечно это не выдача апатчем, без помощи php, но тоже не плохо будет экономить ресурсы.
))) точно! Тогда так: PHP: ... if( $tpl -> load( 'comments' , $comment_id ) ) { ... // тут вывод коментов из базы } ... Где $comment_id идентифицирует кометы с точностью до страницы, а шаблонизатор будет его хешировать и учитывать в названии кэша.
Если уж так будет это нужно, хотя я в этом сомневаюсь, думаю, что всегда можно закеширловать кусками и отделаться просто idшкой этого куска, то можно сделать и так: PHP: load( 'products' , $costGreaterThen.$costLowerThen.$vendor.$supportSD.$... )