Пишем на PHP: Готовим дизайн (окончание)Руслан Курепин
Если вы ничего не упустили из предыдущих глав, то у
вас в директориях лежит все, чтобы сложить первую страничку нашего
наиграндиознешего проекта. Поясняю. Первые три строки говорят браузеру (а частенько и proxy-серверу), что страница наша была создана еще при царе горохе, но хранить ее и считать актуально надо $CACH_TIME секунд. Например, 300 -- 5 минут. Это значит, что посетитель нашего сайта может беспрепятственно посещать знакомые ему страницы, не выкачивая их из Сети повторно, сколько угодно раз в течение заданного времени. По истечение заявленного времени браузер вытянет новую версию страницы, т.к. мы решили, что за прошедшее время страница могла потерять свою актуальность. Кеширование страниц -- очень удобный инструмент, которым можно облегчить или страшно усложнить жизнь веб-серферу. Я бы рекомендовал всем, даже тем у кого контент на странице обновляется часто или даже генерируется уникальный при каждом заходе, создавать хоть небольшой временной буфер кеширования, чтобы пользователь мог беспрепятственно вернуться на предыдущие страницы браузерной кнопкой назад, не выкачивая повторно уже полученный материал. Прежде чем перейти непосредственно к собиранию страницы, позвольте пояснить еще буквально пару распространенных моментов, связанных с кешированием. Первое. Если у вас есть форма для заполнения чего-либо (например форма заказа или регистрации), данные которой проверяются на ошибки, кешировать подобную форму просто необходимо. И чем дольше и сложнее форму заполняют, тем больше должно быть время кеширования. Это нужно для того, чтобы пользователь, получивший от вас сообщение об ошибке, мог нажать "назад" и попасть обратно на страницу с формой, где все поля уже им заполнены. Конечно, если вы не возвращаете пользователя сами на нужную страницу, подставив в заполненные поля соответствующие им данные. Второе. Если вы используете на своем сайте баннерную рекламу, надо иметь в виду, что разные рекламные движки по-разному обновляют/подгружают новые баннеры при хождении по кешированным страницам. Например, сети на основе движка Rotabanner не загружают новые баннеры, если вы вернулись на закешированную страницу. А сети на основе движка BannerBank ведут себя полностью противоположно. И то и другое имеет свои преимущества и большой проблемы не представляет, но это надо иметь в виду, чтобы потом не говорить: "А вот такая-то сеть плохая, она засчитывает мне только 50% показов". Ну что, лирика кончилась, пора за дело (напоминаю, что открывающий php тэг <? разделен у меня пробелом, чтобы текст отображался в браузере, а не отрабатывался. В действительности пробела быть не должно! )? Файл называется index.php и лежит в корневой директории нашего сайта. Не верите? Смотрите сами: http://php.kurepin.ru/. Давайте разберем нашу первую драгоценную страничку. require... -- это мы подключили класс $my=new class_out -- объявили экземпляр класса. Теперь ко всем процедурам и функциям мы будем обращаться не $this->, как раньше, а $my->. $my->sql_connect() -- а вот и первая наша функция отработала: подключились к базе данных. Отлючимся мы теперь только в самом конце файла. $my->html_headers() -- зарядили хидеры. Это надо делать до того, как хоть одна буковка видимого текста попадет в браузер, потом заряжать хидеры нам никто не позволит. Далее, как вы уже сами догадались, подкачиваем заголовок страницы, рекламный блок (пока пустой) и навигатор. Обратите внимание, мы уже во всю используем данные из наших классов. В этих трех вызовах мы пользуемся ссылкой на папку inc в виде переменной из класса vars. Поскольку все таблицы у нас закрыты на данный момент выдачи страницы, мы смело можем сделать flush(); -- пусть шапка отдается пользователю, пока у нас формируется тело страницы. Тело страницы у нас пока крайне простое, текстовое, мы его as is и выдаем. Ну вот, дошли и до финала страницы. Первым делом "выдавливаем" пользователю основное содержимое (тело) страницы посредством flush();, затем подключаем нижний навигатор, нижний рекламный блок, копирайтную строку с финальными html-тэгами и отключаемся от БД -- $my->sql_close(); Все! Поздравляю вас, друзья мои, дело пошло в гору. Теперь у на сайт будет расти как на дрожжах. В заключение мне в голову пришла замечательная идея. Под именем index.php у нас будет храниться, конечно, актуальная версия сайта. Но каждый шажок мы будем запоминать в отдельных файлах в специальной папочке step. А чтобы не мучиться с поиском нужного примера, каждый набор файлов будет иметь номер своего выпуска. Вот этот выпуск имеет номер 144 (видите, в строке URL написано: ...&id=144), значит состояние сайта на текущий момент лежит в папочке http://php.kurepin.ru/step/144/. Проверьте обязательно! ;-) До завтра! |