|
|
|
| Всем привет. Пишу небольшой шаблонизатор, дошел до кэширования. Суть такая: парсим шаблон, создаем из него файл кэша и кладем в отдельную папку. При следующем обновлении страницы проверяем существование этого файла кэша и дату создания. Если файл существует и дата подходит - отдаем кэш. Иначе заново разбираем шаблон.
Всё работает. Но есть такой момент. Например, на одной странице есть форма для отправки данных. Допустим пользователь ее отправил и как следствие на этой же странице он должен получить ответ. И конечно же если использовать тот же принцип кэширования, то он получит тот же результат что и был до отправки, если кэш не старый.
Как быть? Не кэшировать такие страницы? Как-то кэшировать только часть страницы?
Заранее спасибо. Очень жду ответа знающих людей. И пожалуйста, если Вы не сторонник шаблонизаторов или не разбираетесь в этой теме, то лучше не пишите. | |
|
|
|
|
|
|
|
для: Jason
(15.09.2011 в 00:10)
| | не кэшировать | |
|
|
|
|
|
|
|
для: 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 --> в то место, где нужно чтобы появлялось сообщение формы. | |
|
|
|