0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 4385 Просмотров
*

Doctor

  • Новичок
  • 6
  • 0 / 0
Можно ли сделать, чтобы Last-Modified: возвращал дату создания или изменения документа ?
*

Doctor

  • Новичок
  • 6
  • 0 / 0
Re: Обработка заголовка Last-Modified
« Ответ #1 : 09.04.2008, 18:10:54 »
Сделал следующую модификацию:

в файле /components/com_content/content.php в функции show() перед строкой

Код
$cache->call( 'HTML_content::show', $row, $params, $access, $page );

дописал такой код
Код
$date_arr = explode(' ',$row->modified);
$tm = explode(':',$date_arr[1]);
$dt = explode('-',$date_arr[0]);
$date1 = mktime($tm[0],$tm[1],$tm[2],$dt[1],$dt[2],$dt[0]);

$date_arr = array(); $tm = array(); $dt = array();

$date_arr = explode(' ',$row->created);
$tm = explode(':',$date_arr[1]);
$dt = explode('-',$date_arr[0]);
$date2 = mktime($tm[0],$tm[1],$tm[2],$dt[1],$dt[2],$dt[0]);

$date = ($date1>$date) ? $date1 : $date2;

$last_modified = gmdate('D, d M Y H:i:s', $date) . ' GMT';

if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
  $if_modified = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']);
  if ($if_modified == $last_modified) {
    header('HTTP/1.0 304 Not Modified');
    header('Cache-Control: max-age=86400, must-revalidate');
    exit;
  }
}

header('Cache-Control: max-age=86400, must-revalidate');
header('Last-Modified: ' . $last_modified);


Всё равно Last-Modified выводит текущую дату. Может я что-то не то делаю?
*

Doctor

  • Новичок
  • 6
  • 0 / 0
Re: Обработка заголовка Last-Modified
« Ответ #2 : 10.04.2008, 12:47:37 »
попробовал такие изменения:

В функции show() оставил:


$date_arr 
explode(' ',$row->modified);
$tm explode(':',$date_arr[1]);
$dt explode('-',$date_arr[0]);
$date1 mktime($tm[0],$tm[1],$tm[2],$dt[1],$dt[2],$dt[0]);

$date_arr = array(); $tm = array(); $dt = array();

$date_arr explode(' ',$row->created);
$tm explode(':',$date_arr[1]);
$dt explode('-',$date_arr[0]);
$date2 mktime($tm[0],$tm[1],$tm[2],$dt[1],$dt[2],$dt[0]);

$date = ($date1>$date) ? $date1 $date2;

$GLOBALS['date'] = $date;


а код


$last_modified 
gmdate('D, d M Y H:i:s'$GLOBALS['date']) . ' GMT';

if (isset(
$_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
  
$if_modified preg_replace('/;.*$/'''$_SERVER['HTTP_IF_MODIFIED_SINCE']);
  if (
$if_modified == $last_modified) {
    
header('HTTP/1.0 304 Not Modified');
    
header('Cache-Control: max-age=86400, must-revalidate');
    exit;
  }
}

header('Cache-Control: max-age=86400, must-revalidate');
header('Last-Modified: ' $last_modified);


перенес в файл шаблона.

локально протестил - заголовки отправляются.

А на сервере не хотят.
*

missha

  • Новичок
  • 22
  • 0 / 0
Re: Обработка заголовка Last-Modified
« Ответ #3 : 16.06.2008, 14:28:54 »
найди строчку header в index.php и начнет выводиться нормально, однако у меня какого-то фига виводиться 1970 год...
*

missha

  • Новичок
  • 22
  • 0 / 0
Re: Обработка заголовка Last-Modified
« Ответ #4 : 16.06.2008, 16:21:36 »
между прочим очень интересную тему затронул ТС.. очень необходима данная штука в оптимизации... это поможет поисковику быстрее проиндексировать большое кол-во страниц... но решения я пока сам найти не могу... все чертов 1970 год появляется...
*

smart

  • Администратор
  • 6485
  • 1317 / 15
  • Хочешь сделать хорошо — сделай!
Re: Обработка заголовка Last-Modified
« Ответ #5 : 16.06.2008, 21:14:48 »
Намного проще, и не менее эффективно решение от Physicist'a: Мамбот кеширования страниц сайта System-Cache. Данный мамбот возвращает на запрос код 304 если содержимое материала не менялось. И количество запросов к БД существенно сокращает, и с точки зрения поисковиков - тоже весьма адекватно себя ведет... И никаких файлов компонентов править не нужно...
*

missha

  • Новичок
  • 22
  • 0 / 0
Re: Обработка заголовка Last-Modified
« Ответ #6 : 17.06.2008, 00:41:22 »
ОГО!... спасибо!!!!... даже не знал! еще раз подтверждаю слова про Physicist'a.... действительно голова!

и небольшой вопросик сразу: а там кеширование по посл. заходу или по дате создания/изменения??
*

smart

  • Администратор
  • 6485
  • 1317 / 15
  • Хочешь сделать хорошо — сделай!
Re: Обработка заголовка Last-Modified
« Ответ #7 : 17.06.2008, 10:57:56 »
и небольшой вопросик сразу: а там кеширование по посл. заходу или по дате создания/изменения??
по контрольной сумме всей страницы, передаваемой в поле etag запроса...
*

Physicist

  • Глобальный модератор
  • 949
  • 189 / 0
  • Рябов Денис
Re: Обработка заголовка Last-Modified
« Ответ #8 : 17.06.2008, 15:51:28 »
по контрольной сумме всей страницы, передаваемой в поле etag запроса...
На самом деле как md5(URI), т.к. именно так сделано в Joomla!1.5. Но ты прав, md5 от страницы было бы более правильно.
*

Physicist

  • Глобальный модератор
  • 949
  • 189 / 0
  • Рябов Денис
Re: Обработка заголовка Last-Modified
« Ответ #9 : 17.06.2008, 15:55:35 »
Кстати, где-то встречал хак для правильного заголовка Last-Modified. Суть, кажется, в том, что в /components/com_content/content.php при task=view (навскидку не впомню какая функция там вызывается, может и show) в некоторую глобальную переменную записывалось поле modified (или created если контент не модифицировался), а в /index.php там где формируются заголовки ставилось условие на isset наша глобальная переменная, и если она есть — выводился нужный заголовок.

А ведь можно включить такую «фичу» в SystemCache.
*

missha

  • Новичок
  • 22
  • 0 / 0
Re: Обработка заголовка Last-Modified
« Ответ #10 : 19.06.2008, 01:44:13 »
Кстати, где-то встречал хак для правильного заголовка Last-Modified. Суть, кажется, в том, что в /components/com_content/content.php при task=view (навскидку не впомню какая функция там вызывается, может и show) в некоторую глобальную переменную записывалось поле modified (или created если контент не модифицировался), а в /index.php там где формируются заголовки ставилось условие на isset наша глобальная переменная, и если она есть — выводился нужный заголовок.

А ведь можно включить такую «фичу» в SystemCache.

неплохо бы было бы...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как установить тэги H1, H2... для заголовка статьи ?

Автор palexa

Ответов: 2
Просмотров: 2823
Последний ответ 01.04.2007, 22:03:57
от palexa