А это клавиатура, с помощью которой я творю...
http://kurepin.ru/php/day/dir/
Rambler's Top100
PHP-2. Декапитация и формат хранения файлов

Вчера мы определились с набором необходимых инструментов и распределили служебные директории. Что дальше?

Давайте, разложим основные части нашей caricatura.ru по вновь созданным директориям.

Для начала возьмем базовый дизайн страниц и отрежем от них верх и низ: header.html и footer.html.

В header.html будет содержаться заголовок страницы и все служебные тэги, предваряющие показ этой самой страницы. Так же я включаю в эту страницу невидимые части счетчиков и весь необходимый мне код стилей.

http://caricatura.ru/inc/header.html — я вас не обманываю, этот файл действительно присутствует в inc-папке на сайте caricatura.ru и содержит все перечисленное (во всяком случае, на момент написания сегодняшнего выпуска).

Кто-то может вполне резонно задать два очевидных вопроса (один из которых вчера уже был задан на моем форуме):

1. Зачем выносить папку inc в общедоступную зону?

2. Зачем включать стили в тело загружаемых страниц, если можно их подключать в виде отдельного файла, сокращая тем самым время загрузки страниц.

Отвечаю.

1. Потому что мы будем подключать стандартные фрагменты страниц SSI-тэгами, а не "инклудить" их при помощи php-кода. (Случается, что использование php-кода c инклудом страниц иногда работает быстрее, чем SSI-аналоги, но это происходит далеко не всегда, да и SSI считается более стандартным и простым модулем, чем PHP, поэтому я выбрал SSI. Если хотите, можете считать, что мы просто кинули монетку и выпал SSI.). Поскольку на SSI удобнее инклудить инструкцией "virtual" — то, что находится в общедоступной части сайта (чтобы не прописывать полный путь на диске), я и вынес папку /inc в директорию /www.

2. Стили "style" (CSS) действительно принято подключать в виде отдельного файла специальной директивой, но лично мне кажется, что это далеко не всегда оправдано. Дело в том, что подгружаемый файл может не подгрузиться по какой-то причине, что может вызвать визуальный сбой на странице. Бывает, что из кешей и браузеров продолжает грузиться старая версия стилей, когда на сайт уже выложена новая. Все это создает определенное неудобство, и лично мне противно смотреть на страницы, которые загрузились без файла стилей. Мы так часто перегружаем свои страницы графическими элементами и рекламой, что включение в исходный текст файла страницы кило-другой стилевых тегов — не есть важная проблема для загрузки web-страниц.

Но мы отвлеклись. Вырезав "хидер" и "футер" в самостоятельные файлы и уложив их в директорию ./www/inc, мы обеспечили себе возможность подгружать их как в обычные (s)html-файлы, так и в php-код.

Если у вас есть что-то еще, что можно вырезать, как, например, меню навигации или код для вставки рекламных блоков, — вырезайте смело, пусть лежит под рукой.

Готово. Предлагаю больше о дизайне не думать до самого запуска сайта. Дальше мы будем работать с html-файлами, содержащими не дизайнерские изыски, а контент — главную составляющую любого сайта.

Как будем распределять контент.

Лично мне нравится система размещения данных в самостоятельных каталогах. Я имею в виду систему, когда файл "о проекте" размещается не как /about.html, а как /about/index.html, чтобы обращаться к этой информации как к /about/.

Сразу отвечу на вопрос "а почему именно так?". Действительно, нельзя сказать, что это самая популярная форма размещения материала. Но мне она нравится по целому ряду причин:

1. Всегда можно заменить индексный файл с .html на .shtml, .php, .asp или любой другой, не нарушив при этом ни одной внешней или внутренней ссылки.

2. В эту же папку удобно выкладывать дополнительные данные, которые могут динамически или фрагментарно подгружаться к индексному файлу.

3. Всегда можно временно заблокировать доступ к папке, перенаправить ее или совершить какое угодно другое действие, не доставив при этом неудобств посетителю и не нарушив внешних или внутренних ссылок.

4. И, наконец, удобно, когда все разложено по отдельным папкам — никакого бардака. Даже удалять информацию в такой структуре проще.

5. URL-ы без окончаний (.html, .php, .shtml, .phtml, .asp и дры) запоминаются пользователем легче, как мне кажется.

Есть и еще одна причина, о которой хочу сказать отдельно.

У нашего "кролика" есть несколько сетевых имен. А если быть точным:

(www.)caricatura.ru;
(www.)caricature.ru;
(www.)karikatura.ru.

В какой-то мере, каждый из этих доменных имен имеет право на существование и интуитивное написание. Но как быть, если я, как владелец ресурса, хочу сделать один из этих доменов базовым? В нашем случае, главным доменным именем является первый вариант. И если я захочу всех "неграмотных" пользователей загнать на "правильный" сайт, я поступлю очень просто:

1. Пропишу в конфиге apache (httpd.conf), в описании сайта:
ServerName caricatura.ru
ServerAlias *.caricatura.ru *.caricature.ru *.karikatura.ru

2. Перестану во всех внутренних ссылках ставить финальный слеш "/". Т.е. вместо "a href=/about/" буду писать "a href=/about".

Что это даст? А попробуйте сами: http://karikatura.ru/about, — apache не найдет такого файла и начнет искать такую директорию. А когда ее найдет, подставит ServerName в качестве приставки и будет прав.

В результате все "неграмотные" посетители сами по себе окажутся на "правильном" доменном ими. И уже правильные ссылки будут сохранять у себя в "favorites", пересылать друзьям или публиковать на своих сайтах.

Вот такая интересная хитрость.

Все упомянутые причины и подталкивают меня к использованию папок, а не файлов.

Конечно, всего перечисленного можно добиться и другими средствами, но данный способ мне кажется наиболее эффективным, удобным и интуитивно понятным.

Осмысливайте сказанное. Завтра продолжим распределять контент нашего сайта по директориям.

22.09.03

[шаг назад] [печатать] [в начало сайта]



copyright ©2000-2017 Ruslan Kurepin