Заголовки Last-Modified

Главные вкладки

Аватар пользователя iz_amal iz_amal 21 февраля 2017 в 11:04

Всем привет, столкнулся с такой задачей: нужно на сайте (Drupal) отдавать заголовки Last-Modified If-Modified-Since

Нашел решение в интернете:

<?php
$LastModified_unix 
strtotime(date("D, d M Y H:i:s"filectime($_SERVER['SCRIPT_FILENAME']))); 
    
$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');    
    } 
    else{
        
header('Last-Modified:' $LastModified);
    }
?>

Этот код вписал в файл includes/bootstrap.inc в функцию drupal_page_header

При проверке заголовков ответа сервера - Last-Modified не выдается

Хотя если написать header('X-Last-Modified:' . $LastModified); то все хорошо отдается.

Пришел к выводу что где-то обрубается вывод заголовка Last-Modified

Проверял не обрубается ли в htaccess - там нет.

Может кто сталкивался с проблемой?

Комментарии

Аватар пользователя iz_amal iz_amal 21 февраля 2017 в 11:15

Это я нашел в интернете решение такое. А куда нужно? Там есть 2 функции drupal_page_header получается эти заголовки идут при первом построении страницы и вторая функция drupal_serve_page_from_cache - это когда страница из кеша берется.

Я что-то не так сделал? Подскажите?

Аватар пользователя multpix multpix 21 февраля 2017 в 16:51

хакая ядро и контриб вы рискуете столкнуться с проблемами в дальнейшем.
делайте так, когда четко отдаете себе отчет в том что делаете))
иначе:
все что вы пишите сами - оформляйте в своем модуле или теме.
если хотите изменить поведение ядра или какого-то контриб модуля - переопределяйте в своем модуле или теме.

если у вас затруднения - опишите подробно своими словами изначальную задачу,
и свое видение решения (если есть).

Аватар пользователя multpix multpix 21 февраля 2017 в 17:01

даю наводочку: вам нужно думать о том когда обновился кеш страницы, а не когда изменяли файлы с исходным кодом.

ответ на незаданный вопрос: потому что приветствуется поисковая оптимизация но не сеорастия)))

Аватар пользователя multpix multpix 21 февраля 2017 в 21:27

сенкс, но читать я умею))

в правильно заданном вопросе есть часть ответа.
просто нужно объяснить своими словами - зачем? какова конечная цель?

Аватар пользователя iz_amal iz_amal 21 февраля 2017 в 21:46

Конечная цель - именно отдать заголовок. Постановщик задачи - сео-специалист, причем не с моей компании. Остальное мне знать не надо. Мне нужно техническую часть вопроса решить.

А в целом Last-Modified как бы решает вопросы с СЕО (поисковик не будет каждый переиндексировать страницу), плюс с нагрузкой - если страница один раз сохранена - значит будет браться из кеша (второе тут можно опустить пока что).

Аватар пользователя gun_dose gun_dose 21 февраля 2017 в 21:52

В описании той функции, что вы раздраконили, написано чёрным по-белому, что она отдаёт эти заголовки только анониму. А вы небось под админом смотрите, да ещё и в настройках производительности сайта кэширование не включено.

Аватар пользователя multpix multpix 21 февраля 2017 в 22:50

я больше скажу, это работает по умолчанию из коробки...

но наверно тольк до тех пор, пока за дело не возьмуться специалисты))))

Аватар пользователя iz_amal iz_amal 22 февраля 2017 в 8:55

Не то, чтобы раздраконил - вернул как было. Смотрю не под админом - под анонимом, несколько сервисов по проверке ответа сервера. На момент принятия мною сайта - заголовков уже не было. Ну ок, всем спасибо.

Аватар пользователя iz_amal iz_amal 27 февраля 2017 в 14:35

Отвечаю на свой вопрос
На сайте используется Apache в связке nginx - именно nginx обрубал заголовок LastMiodified
Прописал в настройках принудительную отдачу

ssi on;
ssi_last_modified on;
add_header Last-Modified $date_gmt;

Все заработало как надо

Аватар пользователя multpix multpix 27 февраля 2017 в 15:00

iz_amal wrote:

Все заработало как надо

add_header Last-Modified $date_gmt;
дат последней модификации страницы- текущая дата в gmt
какой в этом смысл?

Аватар пользователя fairrandir fairrandir 27 февраля 2017 в 15:29
1

Хотя бы доку бы почитали. http://nginx.org/ru/docs/http/ngx_http_ssi_module.html#ssi_last_modified
Там чёрным по белому написано, что установив значение в on заголовок Last Modified перестаёт обрезаться (этим модулем).
Принудительно выставлять его на текущее время - бред даже для примера.

Аватар пользователя iz_amal iz_amal 27 февраля 2017 в 15:45

Важно то, что уже работает. Бред или не бред это уже решится потом. Дискуссия окончена. Всем спасибо.

Аватар пользователя multpix multpix 27 февраля 2017 в 16:08

iz_amal wrote:

Важно то, что уже работает. Бред или не бред это уже решится потом. Дискуссия окончена. Всем спасибо.

с вами никто не дискутировал.