Всем привет!
Прочитал вот здесь, что HTTP заголовок круто сокращает время обхода робота и помогает быстрее новым страницам попадать в индекс. Мне показалось,что использование Last Modified было бы не лишним у нас на сервере ( да и у других пользователей), вопрос куда это всё вставлять? Наверняка есть файлик с хедерами для всего сайта вцелом, типа языка, мета тегов?
Я попробовал сделать отдельный файл Test.php, вставил туда этот скрипт, проверился на сайте и ничего не вышло. Нашел на форуме точно такой же вопрос, но человека переубедили этого не делать, а я всё же хочу поставить и протестировать.
Вот код:
<?php
$LastModified_unix = 1294844676; // время последнего изменения страницы
$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);
?>
Тоже столкнулся с этой затеей и реализовал ее.
Проверял через сервис https://last-modified.com/ru/last-modified-if-modified-since-php.html
Оба раза ответ ок
Добавил пару строк в индекс.тпл, а этот код вынес в отдельный файл в папке app\functions\smarty_plugins\
В индексе сделал так:
{if $product}{lastmodified time=$product.updated_timestamp}
{elseif $page}{lastmodified time=$page.timestamp}
{elseif $category_data}{lastmodified time=$category_data.timestamp}
{/if}
app\functions\smarty_plugins\function.lastmodified.php
<?php
use Tygh\Registry;
function smarty_function_lastmodified($params)
{
$time=$params['time'];
$LastModified_unix = strtotime(date("D, d M Y H:i:s", $time));
$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);
}
1 лайк
А реальный результат, кроме проверки, есть?
Не знаю как это скажется в целом на нагрузке, но как мне кажется на глаз - в браузере у меня быстрее стало, если например между двумя карточками товара переключаться влево-вправо.
Общая суть этой доработки как раз в том, чтобы задействовать кеш на стороне клиента, и вместо повторной загрузки страницы сказать ему “304 - ничего не менялось”.
А еще это важно для момента, когда роботы обход делают - есть мнение, что они охотнее будут обновления подтягивать с сайта
В целом интересно тоже что будет.
Только для запуска надо учесть много других факторов: те же мета теги, которые могут изменятся модулями и т.д. и т.п…
Со страницами пока не знаю, а вот с продуктами все просто по идее - это поле будет обновляться при каждом обмене, поэтому долго неактуальная информация не провисит.
Добрый день ребята!
Подскажите, кто использует или вообще стоить этот модуль использовать Last-Modified + 304 Not Modified
https://marketplace.cs-cart.com/last-modified-304-not-modified.html