Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: принцип кэширования в шаблонизаторе
 
 автор: Jason   (15.09.2011 в 00:10)   письмо автору
 
 

Всем привет. Пишу небольшой шаблонизатор, дошел до кэширования. Суть такая: парсим шаблон, создаем из него файл кэша и кладем в отдельную папку. При следующем обновлении страницы проверяем существование этого файла кэша и дату создания. Если файл существует и дата подходит - отдаем кэш. Иначе заново разбираем шаблон.
Всё работает. Но есть такой момент. Например, на одной странице есть форма для отправки данных. Допустим пользователь ее отправил и как следствие на этой же странице он должен получить ответ. И конечно же если использовать тот же принцип кэширования, то он получит тот же результат что и был до отправки, если кэш не старый.
Как быть? Не кэшировать такие страницы? Как-то кэшировать только часть страницы?
Заранее спасибо. Очень жду ответа знающих людей. И пожалуйста, если Вы не сторонник шаблонизаторов или не разбираетесь в этой теме, то лучше не пишите.

  Ответить  
 
 автор: sl1p   (15.09.2011 в 05:12)   письмо автору
 
   для: Jason   (15.09.2011 в 00:10)
 

не кэшировать

  Ответить  
 
 автор: Axxil   (15.09.2011 в 09:11)   письмо автору
 
   для: Jason   (15.09.2011 в 00:10)
 

Можно использовать буфер. Что-то типа:

<?
  
if(!empty($_POST)){
    
$form_message 'Форма отправлена';
  }
   function 
place_message($buffer){
     global 
$form_message;
     return 
str_replace('<!-- place message here -->',$form_message,$buffer);
   }
   if(!empty(
$form_message)){
     
ob_start('place_message');
   }

   
// Дальше идёт вывод страницы
?>


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

Ну и понятно, что в самом шаблоне должна быть вставлена инструкция <!-- place message here --> в то место, где нужно чтобы появлялось сообщение формы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования