Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....

 

Как установить Last-Modified и If-Modified-Since

Автор Allegro, 05-12-2012, 01:37:51

« назад - далее »

AllegroTopic starter

Обгуглил и обьяшил все что можно, но так и не нашел каким способом можно сделать отдачу этих заголовков. Нашел код для Last-Modified но при этом запрос If-Modified-Since пишет не найден, проверку делал через  http://last-modified.com/ru/
Может кто сталкивался с этим? Подскажите как настроить именно для wordpress пожалуйста!
  •  


maestrosite.ru

If-Modified-Since - этот запрос бразуер на сервер отправляет, то есть на сервере его устанавливать не надо. А что бы бразуер отправил такой заголовок, от сервера в предыдущем ответе должен поступить заголовок Last-Modified


AllegroTopic starter

Цитата: maestrosite.ru от 05-12-2012, 05:55:09
If-Modified-Since - этот запрос бразуер на сервер отправляет, то есть на сервере его устанавливать не надо. А что бы бразуер отправил такой заголовок, от сервера в предыдущем ответе должен поступить заголовок Last-Modified

В том то и проблема что ответ Last Modified он отправляет но на запрос If-Modified-Since ответа не дает
  •  

maestrosite.ru

#3
1. Убедитесь, что ваш сервер правильно настроен для отправки заголовков Last-Modified и If-Modified-Since. Проверьте файл конфигурации сервера, чтобы убедиться, что эти заголовки не запрещены или отключены.

2. Проверьте файлы темы WordPress и плагины, которые вы используете, чтобы убедиться, что они не перезаписывают или отключают заголовки Last-Modified и If-Modified-Since.

3. Попробуйте использовать плагин для WordPress, который специально разработан для работы с заголовками Last-Modified и If-Modified-Since. Некоторые из таких плагинов включают WP Super Cache, W3 Total Cache и WP Rocket.




если у вас перед апачем стоит nginx, то иногда он обрезает заголовки

max-raccoon

Страшно не люблю регистрироваться на форумах, но так как съел пуд соли, пока искал этот last modified и if modified, счел долгом попробовать помочь. У меня тоже wordpress. Нашел вот такой вот кодец. Вставлял в header.php перед закрывающим тегом </head> Проверял на bertal . ru / index.php?ex=1. (правила размещения ссылок не знаю, поэтому пробелы сами удалите)
Этот сервис мне нравится тем, что он может дать запрос к сайту так, как это сделал бы поисковый робот.
Насколько мне известно, робот запрашивает if modified since и число, когда он последний раз лазил на эту страницу. Если статья с этого времени не изменялась сервер дает ответ 304 not modified. А если изменялась, то 200 ОК. И тогда робот лезет её заново проверять.
Надеюсь, что поможет.
<?php 
$LastModified_unix = unix_time($post->post_modified); 
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix); 
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
    $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));   
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
    $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
    header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
    exit;
}

header('Last-Modified: '. $LastModified);

function unix_time($time_send){
     $year_lm=substr($time_send, 0, 4);
     $mount_lm=substr($time_send, 5, 2);
     $day_lm=substr($time_send, 8, 2);
     $time_lm=substr($time_send, 10, 9);
     $time_lm_unix_in = $year_lm.'-'.$mount_lm.'-'.$day_lm.' '.$time_lm;
     $select_lm = strtotime($time_lm_unix_in);
     return $select_lm;
}

?>
  •  


djohnz

Спасибо, потестирую. Давно искал, но почти никто этим не заморачивается.
  •  

sergei299

для вордпрес нужно установить плагин   wp-super-cache.1.2    и в настройках поставить галочку возле  строчки "Ошибка 304. Данная ошибка возникает тогда, когда страница не была изменена со времени прошлого запроса."
Вы можете прочесть все пособия в мире и прослыть знатоком, но пока вы не начнете реально зарабатывать, все ваши знания равны нулю.
  •  

mckey-veter

Поставил код в друпале - все норм! И не надо никаких модулей. Два дня искал. Также проверил на ://last-modified.com/ru/
Last-Modified найден пишет, а вот 304 Not Modified - нет.
Добавил код - все норм!!!
Спасибо тебе, добрый человек!
  •  


MrBear

Позвольте и мне помочь. Вот еще один код которые работает на моих сайтах
<?php
header('Expires: '.gmdate('D, d M Y H:i:s', time() + 7200).' GMT');
header('Cache-Control: no-cache, must-revalidate');
$mt = filemtime($file_name);
$mt_str = gmdate("D, d M Y H:i:s ")."GMT";
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) &&
strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $mt)
{header('HTTP/1.1 304 Not Modified');
die;
}
header('Last-Modified: '.$mt_str);
echo $text;
header("Vary: Accept-Encoding");
header("Accept-Encoding:gzip,deflate,sdch");
?>
И еще если не работает в wordpress, то добавьте этот код в index.php который в корне сайта, должно помочь.
Код нужно добавить в самый верх дoкумента, до всех записей.
  •  

unik

#9
А вот как быть, если в исходном коде Last-Modified появился, а вот проверка на _last-modified.com не проходит?

Добавлено: 28-12-2013, 07:28:58


разобрался
  •  



Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....