Как настроить ответ сервера Last-Modified

Любая помощь по установке/настройке/модификации concrete5

Как настроить ответ сервера Last-Modified

Сообщение dankoleg » 08 июл 2014, 16:00 ,  »  Сообщение:#1

Здравствуйте!
Помогите пожалуйста правильно настроить ответ сервера Last-Modified для сайта?
dankoleg
 
Сообщения: 5
Зарегистрирован: 14 май 2013, 17:41

Re: Как настроить ответ сервера Last-Modified

Сообщение guyasyou » 08 июл 2014, 18:58 ,  »  Сообщение:#2

Кстати, а это в с5 есть вообще по умолчанию?
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Как настроить ответ сервера Last-Modified

Сообщение dankoleg » 08 июл 2014, 23:01 ,  »  Сообщение:#3

Если было бы по умолчанию то выдавался бы такой ответ сервера:

Last-Modified найден!

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 08 Jul 2014 18:41:58 GMT
Content-Type: text/html
Content-Length: 12977
Connection: close
Last-Modified: Fri, 27 Jun 2014 12:43:30 GMT
ETag: "15423695-32b1-4fcd0a8122080"
Accept-Ranges: bytes
-----
Получено: 243 байт
Затрачено: 3,37 сек

304 Not Modified найден!

HTTP/1.1 304 Not Modified
Server: nginx
Date: Tue, 08 Jul 2014 18:42:02 GMT
Connection: close
ETag: "15423695-32b1-4fcd0a8122080"
-----
Получено: 137 байт
Затрачено: 3,12 сек

Но без правильных настроек сервер выдает ответ Last-Modified не найден:

Last-Modified не найден!

HTTP/1.1 200 OK
Server: nginx admin
Date: Tue, 08 Jul 2014 18:49:40 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
Vary: Accept-Encoding
X-Powered-By: PHP/5.2.17
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: CONCRETE5=46a0726662c09fbde561f0811f36bf50; path=/
X-Cache: HIT from Backend
Получено: 413 байт
Затрачено: 0,89 сек

Результат: провалено


Last-Modified найден.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
dankoleg
 
Сообщения: 5
Зарегистрирован: 14 май 2013, 17:41

Re: Как настроить ответ сервера Last-Modified

Сообщение guyasyou » 09 июл 2014, 10:34 ,  »  Сообщение:#4

Сложность вот в чем: откуда вы будете брать время последней правки? Если из страницы(там есть время последней правки стрпаницы) то она не учитывает динамические блоки, типо комментов.
Я бы в эвентах привязался, до загрузки страницы вставлял бы время в хеадер, и, при необходимости, отвечал бы 304м.
www.pure-web.ru - fullstack разработка сайтов и веб-приложений
Аватара пользователя
guyasyou
Администратор
 
Сообщения: 559
Зарегистрирован: 05 янв 2012, 12:29
Откуда: Новосибирск

Re: Как настроить ответ сервера Last-Modified

Сообщение cmsservice » 09 июл 2014, 12:11 ,  »  Сообщение:#5

В начало файла elements/header.php Вашей темы оформления вставьте следующий код:

Код: Выделить всё
<?php
$c 
= Page::getCurrentPage();
$vo = $c->getVersionObject();

$LastModified = gmdate("D, d M Y H:i:s", strtotime($vo->getVersionDateCreated())) . ' GMT';
$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 >= strtotime($vo->getVersionDateCreated())) :
    header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
    exit;
endif;
header('Last-Modified: '. $LastModified);
?>


И станет все отдавать. Однако, я согласен с guyasyou, что если у Вас изменения делаются не на уровне редактирования страницы, то они не будут видны, браузер будет доставать из кэша. В таком случае, можно предложить два решения:

  1. настроить мета-заголовки таким образом, чтобы браузер принудительно обновлял свой кэш если прошел определенный период с последнего сохранения страницы в кэше.
  2. если данные меняются через single_pages в dashboard, то в коде своего расширения предусмотреть апдейт страниц, содержащих ваше расширение, в случае изменения данных (это в общем не очень сложная задача)
С уважением, Константин
http://Переделка-сайтов.РФ
Индивидуальные решения на платформе Concrete5 для театров и производственно-торговых компаний.
Аватара пользователя
cmsservice
 
Сообщения: 763
Зарегистрирован: 10 окт 2010, 00:10
Откуда: Москва

Re: Как настроить ответ сервера Last-Modified

Сообщение dankoleg » 09 июл 2014, 22:08 ,  »  Сообщение:#6

Здравствуйте1
Код подставил, все заработало.
Большое спасибо.
dankoleg
 
Сообщения: 5
Зарегистрирован: 14 май 2013, 17:41


Вернуться в Помощь по concrete5

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron