Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Last modified_важно для индексации


Рекомендованные сообщения

Други, листая форум наткнулся на следующий парадокс, народ барыжит вещи ну уж совсем из ряда вон выходящие, деньги деньгами, но совесть тоже надо иметь.

 

Выкладываю небольшой БЕСПЛАТНЫЙ Мануал по Last_modified. 

 

Для чего это нужно? 

 

HTTP заголовки Last-Modified и If-Modified-Since Зачем нужен Last-Modified

 

HTTP заголовок Last-Modified сообщает клиенту время последнего изменения страницы (объекта). Если клиент (браузер, поисковый робот) получил заголовок Last-Modified, то при следующем обращении к адресу, при условии, что страница (объект) есть в локальном кеше, он добавит вопрос If-Modified-Since(не изменилась ли страница после даты, полученной в Last-Modified). В свою очередь сервер, получив запрос If-Modified-Since должен сверить полученную временную метку с временем последнего изменения страницы и, если страница не изменялась ответить 304 Not Modified.

 

Экономия Трафика

 

Если страница не изменилась, то сервер прекратит передачу данных после отправки заголовков с кодом304 Not Modified, тело страницы, изображения и другие объекты передаваться не будут.

 

Снижение нагрузки на сервер

 

Правильная реализация проверки времени последнего изменения страницы может значительно (до 30% и более) сократить нагрузку на сервер. Под правильной реализацией подразумевается проверка времени до начала генерации страницы на динамическом сайте. В таком случае все действия для генерации страницы (запрос контента из базы данных, парсинг шаблонов, получение комментариев и др) выполняться не будут. Особенно это актуально для сайтов с высокой посещаемостью и долгой продолжительностью визита пользователя. Пример: пользователь находится на сайте спортивных новостей и постоянно обновляет главную страницу в ожидании публикации результата матча. За несколько минут страница может быть запрошена и получена десятки раз. Если заголовок Last-Modifiedотдается и запрос If-Modified-Since обрабатывается правильно, то реально страница будет передана один раз, а на все последующие запросы будет выдан ответ 304 Not Modified.

 

Ускорение индексации поисковыми системами

 

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

 

В файл /catalog/view/theme/default/template/common/header.tpl

после <head> ставим небольшой скрипт на PHP:

<?php
$num=mt_rand(2000,10000);
$LastModified=gmdate("D, d M Y H:i:s \G\M\T", time()-$num);
$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 >= $num) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
header('Last-Modified: '. $LastModified);
?>

 

HTTP заголовок должен отдаваться корректно.

 

Пользуйтесь на здоровье, но не забываем говорить спасибо )

Изменено пользователем Rashp
  • +1 8
Ссылка на комментарий
Поделиться на других сайтах


Данная тема уже поднималась на форуме.

 

Вообще то вешать на все страницы один last modified это не правильно.  

 

Для товаров, категорий и статей last modified должен браться из поля date_modified в БД. Согласитесь логично:)

 

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

Ссылка на комментарий
Поделиться на других сайтах


Данная тема уже поднималась на форуме.

 

Вообще то вешать на все страницы один last modified это не правильно.  

 

Для товаров, категорий и статей last modified должен браться из поля date_modified в БД. Согласитесь логично :)

 

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

 

Соглашусь но только отчасти, только с точки зрения красоты кода, но с точки зрения практики нет!

У Яндекса пунктик по поводу частоты обновления контента, поэтому лучше отдавать last modified со всего сайта и не заморачиваться, логичо конечно индексировать только изменения, но как показывает практика не всегда хорошо.

Хотя по секрету: главное чтоб он был и корректно отдавался, остальное Яша зацепит из sitemap.xml, там если вы заметили есть тоже last_modified и он как раз на каждую статью и карточку товара идет :)

Ссылка на комментарий
Поделиться на других сайтах


Данная тема уже поднималась на форуме.

 

Вообще то вешать на все страницы один last modified это не правильно.  

 

Для товаров, категорий и статей last modified должен браться из поля date_modified в БД. Согласитесь логично :)

 

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

 

Соглашусь но только отчасти, только с точки зрения красоты кода, но с точки зрения практики нет!

У Яндекса пунктик по поводу частоты обновления контента, поэтому лучше отдавать last modified со всего сайта и не заморачиваться, логичо конечно индексировать только изменения, но как показывает практика не всегда хорошо.

Хотя по секрету: главное чтоб он был и корректно отдавался, остальное Яша зацепит из sitemap.xml, там если вы заметили есть тоже last_modified и он как раз на каждую статью и карточку товара идет :)

Почему же не всегда хорошо с точки зрения практики?

 

Все зависит от целей, которые Вы ставите перед собой.

 

Если нужно ускорить индексацию сайта, то пожалуйста, можете вешать last modified на главную.

 

А если сайт уже успешно проиндексирован и работает, то смысл обманывать робота? :)

 

Last modified из sitemap мне кажется имеет значительно более низкий приоритет, чем заголовок.

Ссылка на комментарий
Поделиться на других сайтах


в базе у товара есть поле date_modified, вот его и нужно использовать.

 

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

Теперь о морали:)

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

Я считаю более аморальным барыжить простейшим скриптом, который находится в свободном доступе в сети.

Ладно, всем удачи в продвижении:)

Ссылка на комментарий
Поделиться на других сайтах


Кстати, вопрос к уважаемому freelancer, на сколько я понимаю вы принимаете участие в локализации движка, можете поспособствовать добавлению в следующие релизы заголовков, мелочь, а думаю многим будет приятно :)

Ссылка на комментарий
Поделиться на других сайтах


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

Ссылка на комментарий
Поделиться на других сайтах

в базе у товара есть поле date_modified, вот его и нужно использовать.

 

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

Теперь о морали :)

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

Я считаю более аморальным барыжить простейшим скриптом, который находится в свободном доступе в сети.

Ладно, всем удачи в продвижении :)

Ну как бы я тоже самое предложил, что и фрилансер:)

 

Я вопрос не к морали поднял, а к тому, что данное действие на этап уже работающего сайта может быть не совсем уместно:)

Ссылка на комментарий
Поделиться на других сайтах


В мультимагазине при переходе в категорию:

Warning: Cannot modify header information - headers already sent by (output started at /home/p50444/www/evro-remont-samara.ru/catalog/language/russian/product/kategory.php:1) in/home/p50444/www/evro-remont-samara.ru/catalog/view/theme/default/template/common/header.tpl on line 18

 

:( 

Ссылка на комментарий
Поделиться на других сайтах

для товара

после строки

$product_info = $this->model_catalog_product->getProduct($product_id);

указать

        $date_modified = strtotime($product_info['date_modified']);
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
            $modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
Изменено пользователем freelancer
  • +1 10
Ссылка на комментарий
Поделиться на других сайтах

для товара

после строки

$product_info = $this->model_catalog_product->getProduct($product_id);

указать

        $date_modified = strtotime($product_info['date_modified']);
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
            $modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");

 

Если не сложно, укажите путь к файлу где содержится строка: $product_info = $this->model_catalog_product->getProduct($product_id);

Ссылка на комментарий
Поделиться на других сайтах


для товара

после строки

$product_info = $this->model_catalog_product->getProduct($product_id);

указать

        $date_modified = strtotime($product_info['date_modified']);
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
            $modified_since = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']);
            if ($modified_since >= $date_modified) {
                header ("HTTP/1.1 304 Not Modified ");
                header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");
                exit();
            }
        }
        header ("Last-Modified: " . gmdate("D, d M Y H:i:s", $date_modified) . " GMT");

 

Однозначно в новую сборку ocStore !

Ссылка на комментарий
Поделиться на других сайтах

после проделанного измениения, попробовал проверить, почему то дату отдает не правильную. Товар изменялся давно, а показывает вчерашнюю дату. В чем может быть проблема?

Ссылка на комментарий
Поделиться на других сайтах


уже ставил решения но через пару месяцев снес из-за подобной ошибки:

Warning: Cannot modify header information - headers already sent by (output started at /home/p50444/www/evro-remont-samara.ru/catalog/language/russian/product/kategory.php:1) in/home/p50444/www/evro-remont-samara.ru/catalog/view/theme/default/template/common/header.tpl on line 18

 

кто воспользовался из этой ветки, отпишитесь плз, не проскакивают ли в журнале ошибки с заголовками?

Ссылка на комментарий
Поделиться на других сайтах


ну это я в качестве примера из топика выше привел...

конкретно у меня такая ошибка:

 

2013-06-15 3:08:03 - PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/БАЗА/public_html/index.php:100) in /home/БАЗА/public_html/catalog/view/theme/mytheme/template/product/product.tpl on line 13

из-за нее и снес ластмодифай, хотя его хочется

Ссылка на комментарий
Поделиться на других сайтах


кстати еще такой вопрос: в этой реализации заголовков будет ли обновляться дата категории товара при добавлении в нее нового товара?

Ссылка на комментарий
Поделиться на других сайтах


И что будет, если на карточке товара есть динамический контент? Например блок "Акции", в котором товар постоянно новый.

Ссылка на комментарий
Поделиться на других сайтах


вобще будет отображать загруженую копию. тоесть обновлятся не будет. по этой причине не использую ластмод на страницах сайта.

Ссылка на комментарий
Поделиться на других сайтах

предлагаю проверить, а не предполагать.

ну или доки почитать, что бы понимать что происходит

про динамический контент проверено. кстати даже статус у товара остается так как фактически пока не зайдешь в карточку не пере сохранишь он отдает загруженую из кеша копию.

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.