Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: разработка для Web > SSI технология и скрипты Perl |
Автор: FlyBird 28.3.2007, 04:38 |
Здравствуйте! По общему принципу сайт использует технологию SSI, т.е. в каждом файле с расширением *.shtml имеется код <!--Include Virtual= "_header.inc"--> < .... код страницы... > <!--Include Virtual= "_footer.inc"--> На сайте функционирует гостевая книга (обычный скрипт, который пишет в базу отзыв посетителя и требует правильного заполнения полей в форме отзыва). Собственно проблема в ней. Если пользователь ошибается в каком-либо поле, скрипт выполняется и выдает пользователю новую форму с указанием ошибки в поле(ях). Чтобы повторить структуру сайта использования шаблонной технологии, сейчас приходится открывать файлы _header.inc и _footer.inc из скрипта и читать их содержимое, а только потом отдавать клиенту. Если пользователей больше 20, то такие тормоза. Что-нибудь можно предпринять в данном случае? |
Автор: korob2001 1.4.2007, 06:40 | ||||||||||
А зачем открывать файлы .inc, если они выводятся через SSI? Если я правильно понимаю, то примерно так выглядит файл SSI, гостевой книги?
Проблема скорее всего в том, что в теге <form> в атрибуте action указан путь не на сам SSI файл, а на Perl программу. Потому именно в этот момент приходится генерировать весь контент именно программой Perl. Для примера пишем простейшую готевую книгу: В каталоге www создадим каталог guest, в него положим три файла _header.inc, _footer.inc и .guest.shtml. Вот так будут выглядеть эти файлы: _header.inc
_footer.inc
guest.shtml
Теперь перейдём к Perl программе. Для неё создадим каталог /cgi-bin/guest и в него положим файл guest.pl, вот так он будет выглядеть:
Теперь запускаем наш SSI файл: http://localhost/guest/guest.shtml Если всё сделал правильно увидешь форму, которую нам генерирует Perl программа. В неё введи сообщение и попробуй сделать ошибку. Скажем укажи Email без @. Заметь, что после получения ошибки мы остались всё на той же SSI страничке, на которой и были перед отправкой сообщения. Теперь поправь поле в котором была обнаружена ошибка и отправь данные снова. Если ошибок больше нет, то программа запишет их в файл и сгенерирует форму+сообщения, которые были успешно добавлены, всё на тойже SSI страничке. PS: Если книга которая тормозит, работает по такому же принципу, то Perl программа вообще не должна даже знать о существовании файлов _header.inc и _footer.inc и уж тем более не должна открывать их при каждом запросе. PSS: Если ничего не понятно, то могу прокоментировать код. Просто у нас уже 5:40 утра, а я ещё не ложился, потому не написал коментарии сразу. |
Автор: FlyBird 2.4.2007, 08:21 |
Спасибо, огромное! Мир не без добрых людей! Именно так и хотелось сделать, только не знал как именно. Код не проверял пока в реальности, но проверю обязательно! Принцип основной именно такой. |