Отдача правильного Last-Modified с учетом модификации шаблонов

Yaguan

пилот
Отдача правильного Last-Modified с учетом модификации шаблонов

Такая вот проблема возникла.

Необходимо отдавать клиенту правильный заголовок Last-Modified. Дата изменения собственно данных, которые хранятся в БД, известна. Но если отдавать ее этим заголовком, то может получиться так, что поисковик не станет заново индексировать страницу, если в ней поменялся только шаблон.

Поэтому хочется проверять еще и дату модификации используемого шаблона, и если она "новее", чем дата изменения информации в БД, то отдавать более свежую дату.

Догадываюсь, что логичнее всего смотреть на дату скомпиленного шаблона, но хочется знать, как сделать это наиболее правильно.

Например, как в скрипте получить имя файла, в котором хранится скомпиленный шаблон, используемый при выдаче?
 

alexhemp

Новичок
Не нужно получать дату скомпиленного шаблона. Достаточно посмотреть дату исходного файла.

Вот у меня так сделано
Код:
class MySmarty extends Smarty {
...
...
...
function template_timestamp($tpl_file)
{
    $_params = array('resource_name' => $tpl_file, 'quiet'=>true, 'get_source'=>false);
   if ($this->_fetch_resource_info($_params))
return $_params['resource_timestamp']; 
	else 
return 0; 
}
Ну и потом вызываю типа так
$modified = max($smarty->template_timestamp($document->template),
$smarty->template_timestamp($config->page_template),
$document->modified);

У меня в формировании страницы участвует минимум 2 шаблона.

Вспомогательные блоки я не учитываю, они могут меняться очень часто, достаточно чтобы индексировалась главная страница, а ей все равно нужно всегда отдавать код 200.
 
Сверху